Consigner une erreur avec les informations de débogage en Python

Najwa Riyaz 30 janvier 2023
  1. Utilisez la méthode exception() pour enregistrer une erreur avec des informations de débogage détaillées en Python
  2. Utilisez la méthode exception() avec stack_info pour enregistrer une erreur avec des informations de débogage détaillées dans Python 3.2+
  3. Utilisez la méthode exception() avec exc_info pour enregistrer une erreur avec des informations de débogage détaillées dans Python 3.5+
Consigner une erreur avec les informations de débogage en Python

Cet article explique comment consigner une erreur avec des informations de débogage détaillées en Python.

Pour afficher des informations de débogage détaillées, importez la bibliothèque logging en Python et utilisez la méthode logging.exception(). Il affichera le message d’erreur et la trace de la pile.

Nous savons que la chaîne d’exception vous aidera à comprendre l’erreur exacte qui s’est produite dans Python. En dehors de cela, nous pouvons déterminer des informations détaillées sur l’exception et la ligne de code qui a généré l’exception.

Appelez la méthode logging.exception() dans le bloc de code except ; cela permet d’afficher une trace de pile avec le message d’erreur. Sur ce logger, il enregistre le message de niveau ERROR. Les informations sur l’exception sont ajoutées au message de journalisation.

Utilisez la méthode exception() pour enregistrer une erreur avec des informations de débogage détaillées en Python

Voici un exemple qui montre comment vous pouvez consigner une erreur avec des informations de débogage détaillées en Python.

import logging


def fnc_divide(n):
    try:
        result = n / 0
        print("The result=", result)

    except:
        print("The except block")
        logging.exception("The detailed error message -")


fnc_divide(5)

Production:

The except block
ERROR:root:The detailed error message -
Traceback (most recent call last):
  File "C:/Users/../a.py", line 4, in fnc_divide
    result=n/0
ZeroDivisionError: division by zero

Notez que dans la sortie, les informations détaillées sont affichées concernant l’erreur, comme indiqué ci-dessous.

  • Il mentionne le module/la fonction où l’erreur s’est produite. Dans cet exemple, la sortie affiche que l’erreur s’est produite dans la méthode fnc_divide().
  • Il mentionne le numéro de ligne où l’erreur s’est produite. Dans cet exemple, la sortie affiche que l’erreur s’est produite sur la ligne numéro 4.
  • Il mentionne l’erreur exacte. Dans cet exemple, il s’agit de ZeroDivisionError: division by zero.

Utilisez la méthode exception() avec stack_info pour enregistrer une erreur avec des informations de débogage détaillées dans Python 3.2+

À partir de Python 3.2+, vous pouvez passer l’argument stack_info comme True. Il montre comment vous êtes arrivé à un point particulier du code ; c’est également le cas lorsqu’aucune exception n’est soulevée.

Si stack_info est True, les informations de la pile sont ajoutées au message de journalisation, plus l’appel de journalisation réel, et sont associées aux trames de la pile dans l’ordre. L’ordre va du bas de la pile jusqu’à l’appel de journalisation dans le thread actuel.

Regardez cet exemple de code ci-dessous.

import logging


def fnc_dividestack(n):
    try:
        result = n / 0
    except Exception:
        logging.exception("The detailed error message -", stack_info=True)


fnc_dividestack(4)

Production:

ERROR:root:The detailed error message -
Traceback (most recent call last):
  File "C:/Users/Ri..error.py", line 5, in fnc_dividestack
    result=n/0
ZeroDivisionError: division by zero
Stack (most recent call last):
  File "C:/Users/Ri..error.py", line 9, in <module>
    fnc_dividestack(4)
  File "C:/Users/Ri..error.py", line 7, in fnc_dividestack
    logging.exception("The detailed error message -", stack_info=True)

Utilisez la méthode exception() avec exc_info pour enregistrer une erreur avec des informations de débogage détaillées dans Python 3.5+

À partir de Python 3.5+, vous pouvez passer une instance d’exception dans l’argument exc_info. Ce paramètre accepte les instances d’exception.

Notez que le tuple exc_info contient les informations d’exception en cours si une exception se produit ; sinon, il contient None. Vous trouverez ci-dessous un exemple qui illustre ce processus.

import logging


def fnc_divide(n):
    try:
        result = n / 0
        print("The result=", result)

    except Exception as e:
        logging.exception("The exc_info - Zero Division error", exc_info=e)


fnc_divide(5)

Production:

ERROR:root:The exc_info - Zero Division error
Traceback (most recent call last):
  File "C:/Users/R..ror.py", line 4, in fnc_divide
    result=n/0
ZeroDivisionError: division by zero

Article connexe - Python Logging