Imprimir seguimiento de pila en Python
-
Imprimir seguimiento de pila en Python usando el módulo
traceback
-
Imprimir seguimiento de pila en Python usando el método
logging.exception()
En este tutorial, analizaremos varios métodos para imprimir el seguimiento de la pila sin detener la ejecución del programa en Python.
Un seguimiento de pila contiene una lista de llamadas a métodos activos en un momento específico. Podemos imprimir el seguimiento de la pila en Python usando los siguientes métodos.
Imprimir seguimiento de pila en Python usando el módulo traceback
El módulo traceback
proporciona las funcionalidades para extraer, formatear e imprimir rastros de pila en Python. El método traceback.format_exc()
devuelve una cadena que contiene la información sobre la excepción y las entradas de seguimiento de pila del objeto de seguimiento.
Podemos usar el método format_exc()
para imprimir el seguimiento de la pila con las declaraciones try
y except
. El siguiente código de ejemplo demuestra cómo imprimir el seguimiento de la pila usando el método traceback.format_exc()
en Python.
import traceback
import sys
try:
myfunction()
except Exception:
print(traceback.format_exc())
Producción :
Traceback (most recent call last):
File "C:\Test\test.py", line 5, in <module>
myfunction()
NameError: name 'myfunction' is not defined
En lugar de usar la función print()
, también podemos usar el método logger.debug()
para registrar la salida, ya que el registro puede facilitar la depuración. Podemos registrar el seguimiento de la pila en Python usando el método logger.debug()
en el siguiente método.
import logging
import traceback
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
try:
myfunction()
except Exception:
logger.debug(traceback.format_exc())
Producción :
DEBUG:__main__:Traceback (most recent call last):
File "C:\Test\test.py", line 8, in <module>
myfunction()
NameError: name 'myfunction' is not defined
Imprimir seguimiento de pila en Python usando el método logging.exception()
También podemos usar el método logging.exception()
del módulo logging
para obtener el seguimiento de la pila en Python. El método logging.exception()
registra el mensaje que contiene la información de la excepción. Podemos usarlo para imprimir el seguimiento de la pila en Python de la siguiente manera.
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)
Producción :
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