Stack Trace in Python drucken

Muhammad Waiz Khan 30 Januar 2023
  1. Stack-Trace in Python mit dem Modul traceback drucken
  2. Stack-Trace in Python mit der Methode logging.exception() drucken
Stack Trace in Python 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