Syntaxe
newrelic.agent.notice_error(error=None, attributes={}, expected=None, ignore=None, status_code=None, application=None)Enregistre les détails d'une exception Python en tant qu'erreur.
Description
Par défaut, l'agent Python signale uniquement les exceptions non gérées. Utilisez notice_error pour enregistrer toute exception Python comme une erreur, qui peut ensuite être trouvée dans l' UI. Si aucun paramètre n'est fourni, les détails de l'exception actuellement traitée seront utilisés.
Vous pouvez enregistrer jusqu'à cinq exceptions distinctes par transaction et jusqu'à 20 exceptions au total pour toutes les transactions par cycle de collecte.
Lorsque notice_error() est appelé dans le contexte d'une demande Web de monitoring ou d'une tâche en arrière-plan, les détails de l'exception seront signalés par rapport à l' application à laquelle la demande ou la tâche est signalée.
Si appelé en dehors du contexte d'une requête Web de monitoring ou d'une tâche d'arrière-plan, l'appel sera ignoré à moins que l'argument de mot-clé application ne soit fourni et qu'un objet application correspondant à l' application par rapport à laquelle l'exception doit être enregistrée soit fourni. Un objet d'application approprié peut être obtenu à l'aide de la fonction newrelic.agent.application() .
Paramètres
Conseil
Dans presque tous les cas, notice_error ne nécessitera aucun paramètre.
paramètres | Description |
|---|---|
tuple, BaseException interceptée | Optionnel et rarement utilisé. Soit un tuple contenant des informations sur l'exception Remarque : Une trace de pile est toujours requise, soit comme troisième élément du tuple d'exception, soit comme attribut |
dict | Facultatif. attribut personnalisé à ajouter à l'événement d'erreur (en plus de tout attribut personnalisé déjà ajouté à la transaction). Si le mode haute sécurité est activé, cela ne fonctionnera pas. |
boolean, iterable[String], callable(exception_class, exception_instance, traceback)->boolean | Facultatif. Les erreurs à marquer comme attendues peuvent être transmises sous la forme d'un itérable de chaînes sous la forme |
boolean, iterable[String], callable(exception_class, exception_instance, traceback)->boolean | Facultatif. Les erreurs à ignorer peuvent être transmises sous la forme d'un itérable de chaînes sous la forme |
chaîne, entier, appelable(exception_class, exception_instance, traceback) | Facultatif. Le code d'état d'exception. Cette valeur peut être une chaîne, un entier ou un appelable qui prend les informations d'exception |
objet d'application | Facultatif. Si appelé en dehors du contexte d'une requête Web de monitoring ou d'une tâche d'arrière-plan, l'appel sera ignoré à moins que l' objet |
Valeurs de retour
Aucun.
Exemples
Exemple simple de signalement d'exceptions
Dans la grande majorité des cas, vous n'aurez pas besoin de passer de paramètre. Vous devez simplement appeler ce qui suit lorsque vous souhaitez signaler une exception :
newrelic.agent.notice_error()Exemple utilisant un booléen
Un exemple de notice_error utilisant une valeur booléenne. Cela indique qu’une erreur est à prévoir.
newrelic.agent.notice_error(expected=True)Appeler avec une erreur spécifique, lorsque plusieurs exceptions sont actives
try: raise ValueErrorexcept ValueError as first_exc: first_exc_tuple = sys.exc_info() try: raise RuntimeError except RuntimeError as second_exc: # To report an exception other than the most recently raised one newrelic.agent.notice_error(error=first_exc) # Or alternatively: # newrelic.agent.notice_error(error=first_exc_tuple)Lorsque plusieurs exceptions sont gérées en même temps, il est parfois utile de spécifier l'exception que vous souhaitez signaler. Cela peut être fait en passant l'instance BaseException capturée, ou le tuple renvoyé en appelant sys.exc_info() lorsque cette exception était l'exception active.
Appel avec l'uplet sys.exc_info() et un paramètre supplémentaire
Un exemple de notice_error utilisant les données 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)Exemple d'utilisation du rappel
Si vous devez filtrer les exceptions de manière dynamique en fonction de l'attribut d'un type d'exception spécifique, vous pouvez fournir une fonction de rappel :
def _ignore_errors(exc, value, tb): if instance(value, HTTPError): if value.status == 404: return True
newrelic.agent.notice_error(ignore=_ignore_errors)Si l'exception doit être ignorée/attendue, définissez la valeur de retour de l'appelable sur True. Renvoie False si l'exception ne doit jamais être ignorée/attendue, quelles que soient les autres vérifications, et None si les vérifications ultérieures et les règles intégrées doivent déterminer si l'exception doit être ignorée/attendue. Un rappel renverrait normalement soit True soit None.