Stack Trace in Python drucken
-
Stack-Trace in Python mit dem Modul
traceback
drucken -
Stack-Trace in Python mit der Methode
logging.exception()
drucken
In diesem Tutorial werden wir verschiedene Methoden untersuchen, um den Stack-Trace zu drucken, ohne die Ausführung des Programms in Python zu stoppen.
Ein Stacktrace enthält eine Liste aktiver Methodenaufrufe zu einem bestimmten Zeitpunkt. Wir können den Stack-Trace in Python mit den folgenden Methoden drucken.
Stack-Trace in Python mit dem Modul traceback
drucken
Das Modul traceback
bietet die Funktionalitäten zum Extrahieren, Formatieren und Drucken von Stack-Traces in Python. Die Methode traceback.format_exc()
gibt einen String zurück, der die Informationen über Exception- und Stack-Trace-Einträge vom Traceback-Objekt enthält.
Mit der Methode format_exc()
können wir den Stack-Trace mit den Anweisungen try
und except
ausgeben. Der folgende Beispielcode zeigt, wie Sie den Stack-Trace mit der Methode traceback.format_exc()
in Python drucken.
import traceback
import sys
try:
myfunction()
except Exception:
print(traceback.format_exc())
Ausgabe:
Traceback (most recent call last):
File "C:\Test\test.py", line 5, in <module>
myfunction()
NameError: name 'myfunction' is not defined
Anstelle der Funktion print()
können wir auch die Methode logger.debug()
verwenden, um die Ausgabe zu protokollieren, da das Protokollieren das Debuggen erleichtern kann. Wir können den Stack-Trace in Python protokollieren, indem wir die Methode logger.debug()
in der folgenden Methode verwenden.
import logging
import traceback
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
try:
myfunction()
except Exception:
logger.debug(traceback.format_exc())
Ausgabe:
DEBUG:__main__:Traceback (most recent call last):
File "C:\Test\test.py", line 8, in <module>
myfunction()
NameError: name 'myfunction' is not defined
Stack-Trace in Python mit der Methode logging.exception()
drucken
Wir können auch die Methode logging.exception()
des Moduls logging
verwenden, um den Stack-Trace in Python zu erhalten. Die Methode logging.exception()
protokolliert die Nachricht mit den Ausnahmeinformationen. Wir können es verwenden, um den Stack-Trace in Python auf folgende Weise zu drucken.
import logging
import traceback
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
try:
myfunction()
except Exception:
logging.info("General exception noted.", exc_info=True)
Ausgabe:
INFO:root:General exception noted.
Traceback (most recent call last):
File "C:\Test\test.py", line 8, in <module>
myfunction()
NameError: name 'myfunction' is not defined