Imprimir seguimiento de pila en Python

Muhammad Waiz Khan 30 enero 2023
  1. Imprimir seguimiento de pila en Python usando el módulo traceback
  2. Imprimir seguimiento de pila en Python usando el método logging.exception()
Imprimir seguimiento de pila en Python

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