Sintaxis
newrelic.agent.record_exception(exc=None, value=None, tb=None, params={}, ignore_errors=[], application=None)
Esta API ha quedado obsoleta. Utilice notice_error()
.
Descripción
Registra los detalles de una excepción de Python como un error.
De forma predeterminada, el agente Python solo informa excepciones no controladas. Utilice record_exception
para registrar cualquier excepción de Python como un error, que luego se puede encontrar en la UI de New Relic. Si no se proporciona ningún parámetro, se utilizarán los detalles de la excepción que se está manejando 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 record_exception()
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, record_exception
no requerirá ningún parámetro.
Parámetro | Descripción |
---|---|
objeto de clase | Opcional y poco usado. El tipo de excepción que se está manejando (un objeto de clase). Uno de los tres valores ( |
int, cadena, otro | Opcional y poco usado. El parámetro de excepción. Uno de los tres valores ( |
objeto | Opcional y poco usado. Un objeto de rastreo que encapsula la stack de llamadas en el punto donde ocurrió originalmente la excepción. Uno de los tres valores ( |
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á. |
cadena | Opcional. Los errores a ignorar se pueden pasar en el formulario |
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.record_exception()
Llamada con sys.exc_info() tuple y parámetro adicional
Un ejemplo de record_exception
usando datos sys.exc_info()
:
def complex_ignore_errors(exc, val, tb): # do some logic here return False
newrelic.agent.record_exception(params={'my_special_exception': True}, ignore_errors=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.record_exception(ignore_errors=_ignore_errors)
Si se va a ignorar la excepción, establezca el valor de retorno para el invocable en True
. Devuelve False
si la excepción nunca debe ignorarse independientemente de otras comprobaciones, y None
si las comprobaciones posteriores y las reglas incorporadas deben determinar si la excepción debe ignorarse. Una devolución de llamada normalmente devolvería True
o None
.