Einen Fehler mit Debug-Informationen in Python protokollieren
-
Verwenden Sie die Methode
exception()
, um einen Fehler mit detaillierten Debug-Informationen in Python zu protokollieren -
Verwenden Sie die Methode
exception()
mitstack_info
, um einen Fehler mit detaillierten Debug-Informationen in Python 3.2+ zu protokollieren -
Verwenden Sie die Methode
exception()
mitexc_info
, um einen Fehler mit detaillierten Debug-Informationen in Python 3.5+ zu 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