Einen Fehler mit Debug-Informationen in Python protokollieren

Najwa Riyaz 30 Januar 2023
  1. Verwenden Sie die Methode exception(), um einen Fehler mit detaillierten Debug-Informationen in Python zu protokollieren
  2. Verwenden Sie die Methode exception() mit stack_info, um einen Fehler mit detaillierten Debug-Informationen in Python 3.2+ zu protokollieren
  3. Verwenden Sie die Methode exception() mit exc_info, um einen Fehler mit detaillierten Debug-Informationen in Python 3.5+ zu protokollieren
Einen Fehler mit Debug-Informationen in Python protokollieren

In diesem Artikel wird erläutert, wie Sie einen Fehler mit detaillierten Debug-Informationen in Python protokollieren.

Um detaillierte Debug-Informationen anzuzeigen, importieren Sie die Bibliothek logging in Python und verwenden Sie die Methode logging.exception(). Es zeigt die Fehlermeldung und den Stack-Trace an.

Wir wissen, dass die AusnahmeZeichenkette Ihnen helfen wird, den genauen Fehler zu verstehen, der in Python aufgetreten ist. Außerdem können wir detaillierte Informationen über die Ausnahme und die Codezeile, die die Ausnahme generiert hat, ermitteln.

Rufen Sie die Methode logging.exception() innerhalb des Codeblocks except auf; Dies hilft, einen Stack-Trace mit der Fehlermeldung anzuzeigen. Auf diesem Logger protokolliert er die Meldung mit dem Level ERROR. Die Ausnahmeinformationen werden an die Protokollierungsnachricht angehängt.

Verwenden Sie die Methode exception(), um einen Fehler mit detaillierten Debug-Informationen in Python zu protokollieren

Hier ist ein Beispiel, das zeigt, wie Sie einen Fehler mit detaillierten Debug-Informationen in Python protokollieren können.

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)

Ausgabe:

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

Beachten Sie, dass in der Ausgabe detaillierte Informationen zum Fehler wie unten aufgeführt angezeigt werden.

  • Es wird das Modul/die Funktion erwähnt, bei der der Fehler aufgetreten ist. In diesem Beispiel zeigt die Ausgabe an, dass der Fehler innerhalb der Methode fnc_divide() aufgetreten ist.
  • Es wird die Zeilennummer angegeben, in der der Fehler aufgetreten ist. In diesem Beispiel zeigt die Ausgabe an, dass der Fehler in Zeile 4 aufgetreten ist.
  • Es erwähnt den genauen Fehler. In diesem Beispiel ist es ZeroDivisionError: division by zero.

Verwenden Sie die Methode exception() mit stack_info, um einen Fehler mit detaillierten Debug-Informationen in Python 3.2+ zu protokollieren

Ab Python 3.2+ können Sie das Argument stack_info als True übergeben. Es zeigt, wie Sie zu einem bestimmten Punkt im Code gelangt sind; dies ist auch der Fall, wenn keine Ausnahmen ausgelöst werden.

Wenn stack_info True ist, werden die Stack-Informationen der Logging-Nachricht plus dem eigentlichen Logging-Aufruf hinzugefügt und den Stack-Frames der Reihe nach zugeordnet. Die Reihenfolge ist vom unteren Ende des Stapels bis zum Protokollierungsaufruf im aktuellen Thread.

Sehen Sie sich diesen Beispielcode unten an.

import logging


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


fnc_dividestack(4)

Ausgabe:

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)

Verwenden Sie die Methode exception() mit exc_info, um einen Fehler mit detaillierten Debug-Informationen in Python 3.5+ zu protokollieren

Ab Python 3.5 und höher können Sie eine Ausnahmeinstanz im Argument exc_info übergeben. Dieser Parameter akzeptiert Ausnahmeinstanzen.

Beachten Sie, dass das Tupel exc_info die aktuellen Ausnahmeinformationen enthält, wenn eine Ausnahme auftritt; andernfalls enthält es None. Unten ist ein Beispiel, das diesen Prozess demonstriert.

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)

Ausgabe:

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

Verwandter Artikel - Python Logging