Sintaxis
newrelic.agent.notice_error(error=None, attributes={}, expected=None, ignore=None, status_code=None, application=None)
Registra los detalles de una excepción de Python como un error.
Descripción
De forma predeterminada, el agente Python solo informa excepciones no controladas. Utilice notice_error
para registrar cualquier excepción de Python como un error, que luego se puede encontrar en la UI. Si no se proporciona ningún parámetro, se utilizarán los detalles de la excepción manejada actualmente.
Puede registrar hasta cinco excepciones distintas por transacción y hasta 20 excepciones en total en todas las transacciones por ciclo de recolección.
Cuando se llama a notice_error()
en el contexto de una solicitud web de supervisión o una tarea en segundo plano, los detalles de la excepción se informarán en la aplicación a la que se informa la solicitud o tarea.
Si se llama fuera del contexto de una solicitud web de monitor o de una tarea en segundo plano, la llamada se ignorará a menos que se proporcione el argumento de palabra clave application
y se proporcione un objeto de aplicación correspondiente a la aplicación en la que se debe registrar la excepción. Se puede obtener un objeto de aplicación adecuado utilizando la función newrelic.agent.application()
.
Parámetros
Sugerencia
En casi todos los casos, notice_error
no requerirá ningún parámetro.
Parámetro | Descripción |
---|---|
tupla | Opcional y poco usado. Una tupla que contiene información de excepción |
dict | Opcional. Atributos personalizados para agregar al evento de error (además de cualquier atributo personalizado ya agregado a la transacción). Si el modo de alta seguridad está habilitado, esto no funcionará. |
boolean, iterable[String], callable(exception_class, exception_instance, traceback)->boolean | Opcional. Los errores para marcar como esperado se pueden pasar como un iterable de cadenas en el formato |
boolean, iterable[String], callable(exception_class, exception_instance, traceback)->boolean | Opcional. Los errores a ignorar se pueden pasar como un iterable de cadenas en el formato |
cadena, entero, invocable (exception_class, exception_instance, traceback) | Opcional. El código de estado de excepción. Este valor puede ser una cadena, un número entero o un elemento invocable que toma la información de excepción |
objeto de aplicación | Opcional. Si se llama fuera del contexto de una solicitud web de supervisión o una tarea en segundo plano, la llamada se ignorará a menos que se proporcione el objeto |
Valores de retorno
Ninguno.
Ejemplos
Ejemplo sencillo de notificación de excepciones
En la gran mayoría de los casos, no será necesario pasar ningún parámetro. Simplemente llamaría a lo siguiente cuando desee informar una excepción:
newrelic.agent.notice_error()
Ejemplo usando booleano
Un ejemplo de notice_error
usando un valor booleano. Esto indica que se debe esperar un error.
newrelic.agent.notice_error(expected=True)
Llamada con sys.exc_info() tuple y parámetro adicional
Un ejemplo de notice_error
usando datos sys.exc_info()
:
def complex_ignore_errors(exc, val, tb): # do some logic here return False
newrelic.agent.notice_error(attributes={'my_special_exception': True}, ignore=complex_ignore_errors)
Ejemplo de devolución de llamada
Si necesita filtrar excepciones dinámicamente según el atributo de un tipo de excepción específico, puede proporcionar una función de devolución de llamada:
def _ignore_errors(exc, value, tb): if instance(value, HTTPError): if value.status == 404: return True
newrelic.agent.notice_error(ignore=_ignore_errors)
Si se va a ignorar/esperar la excepción, establezca el valor de retorno para el invocable en True
. Devuelve False
si la excepción nunca debe ignorarse/esperarse independientemente de otras comprobaciones, y None
si las comprobaciones posteriores y las reglas incorporadas deben determinar si la excepción debe ignorarse/esperarse. Una devolución de llamada normalmente devolvería True
o None
.