Sintaxe
newrelic.agent.record_exception(exc=None, value=None, tb=None, params={}, ignore_errors=[], application=None)
Esta API foi descontinuada. Por favor use notice_error()
.
Descrição
Registra detalhes de uma exceção Python como um erro.
Por padrão, o agente Python relata apenas exceções não tratadas. Use record_exception
para registrar qualquer exceção do Python como um erro, que pode ser encontrado na interface do New Relic. Se nenhum parâmetro for fornecido, os detalhes da exceção que está sendo tratada no momento serão usados.
Você pode registrar até cinco exceções distintas por transação e até 20 exceções no total em todas as transações por ciclo de coleta.
Quando record_exception()
é chamado no contexto de uma solicitação da Web de monitoramento ou de uma tarefa em segundo plano, os detalhes da exceção serão relatados no aplicativo ao qual a solicitação ou tarefa está sendo relatada.
Se chamada fora do contexto de uma solicitação da Web de monitoramento ou de uma tarefa em segundo plano, a chamada será ignorada, a menos que o argumento da palavra-chave application
seja fornecido e um objeto de aplicativo correspondente ao aplicativo no qual a exceção deve ser registrada seja fornecido. Um objeto de aplicativo adequado pode ser obtido usando a função newrelic.agent.application()
.
Parâmetro
Dica
Em quase todos os casos, record_exception
não exigirá nenhum parâmetro.
Parâmetro | Descrição |
---|---|
objeto de classe | Opcional e raramente usado. O tipo de exceção que está sendo tratada (um objeto de classe). Um dos três valores ( |
int, string, outro | Opcional e raramente usado. O parâmetro de exceção. Um dos três valores ( |
objeto | Opcional e raramente usado. Um objeto traceback que encapsula a stack de chamadas no ponto onde ocorreu originalmente a exceção. Um dos três valores ( |
dict | Opcional. atributo personalizado a ser adicionado ao evento de erro (além de qualquer atributo personalizado já adicionado à transação). Se o modo de alta segurança estiver ativado, isso não funcionará. |
corda | Opcional. Erros a serem ignorados podem ser passados no formato |
objeto de aplicativo | Opcional. Se chamada fora do contexto de uma solicitação da Web de monitoramento ou de uma tarefa em segundo plano, a chamada será ignorada, a menos que o objeto |
Valores de retorno
Nenhum.
Exemplos
Exemplo simples de reportar exceções
Na grande maioria dos casos, você não precisará passar nenhum parâmetro. Você apenas chamaria o seguinte quando quiser relatar uma exceção:
newrelic.agent.record_exception()
Chame com tupla sys.exc_info() e parâmetro adicional
Um exemplo de record_exception
usando dados 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)
Exemplo usando retorno de chamada
Se precisar filtrar exceções dinamicamente com base no atributo de um tipo de exceção específico, você pode fornecer uma função de retorno de chamada:
def _ignore_errors(exc, value, tb): if instance(value, HTTPError): if value.status == 404: return True
newrelic.agent.record_exception(ignore_errors=_ignore_errors)
Se a exceção for ignorada, defina o valor de retorno do chamável como True
. Retorne False
se a exceção nunca deve ser ignorada, independentemente de quaisquer outras verificações, e None
se verificações subsequentes e regras integradas devem determinar se a exceção deve ser ignorada. Um retorno de chamada normalmente retornaria True
ou None
.