Imprimir Stacktrace en Pyhton Log

Imprimir Stacktrace En Pyhton Log



Una colección de llamadas de aproximación en un momento particular se representa en un seguimiento de pila. Cuando un programa genera una excepción, Python genera un seguimiento de pila, también conocido como seguimiento o seguimiento inverso. Hay una variedad de detalles en este seguimiento de pila que se pueden explotar para localizar el problema. El paquete de registro de Python viene con varias características fundamentales y tiene varios niveles de registro, incluidos 'depuración', 'información', 'advertencia', 'error' y 'crítico'.

Ejemplo 1: Imprima Stacktrace en Python utilizando el módulo Traceback

En este ejemplo, usaremos un código simple para demostrar cómo implementar el módulo de seguimiento de Python para imprimir el seguimiento de la pila. Este paquete de trackback incluye una función muy apreciada para recopilar, almacenar y exhibir los rastros de pila de los lenguajes informáticos. Duplica fielmente las operaciones de impresión de seguimiento de pila de un script. Si alguna vez necesita ver el seguimiento de la pila, es esencial.

En otras palabras, un seguimiento de la pila muestra cada operación anterior a la que generó el problema. La información más importante siempre se informa en la última línea de un seguimiento de pila, que es cuando se identifica la falla. Todas las llamadas de función en el error resultante se pueden usar para localizar y resolver el problema rápidamente.







Comencemos implementando el código mediante la importación de la biblioteca Python de seguimiento. Luego, en la siguiente línea, creamos una matriz y enumeramos los elementos con algunos valores. Los valores de la lista de matrices son '7', '8', '9' y '10'. Hay cuatro valores en la lista de arreglos. Esta lista de matrices se guardó en la variable 'A' previamente inicializada.



A continuación, utilizamos el término 'intentar' y el valor 'A=6' en la siguiente línea. Utilizamos los bloques try-except en Python para administrar las excepciones. Este enfoque se usa para escribir el script que podría generar un error en el encabezado del bloque. Las excepciones son esencialmente errores, similares a los errores de sintaxis. Durante una excepción de un programa, el manejo de excepciones es el único acto de responder a la excepción. Volviendo al guión, usamos 'excepto' en la siguiente línea.



En el bloque de excepción, usamos 'traceback.print exc()', que es la abreviatura de 'excepción de impresión'. Usamos la función 'imprimir ()' dentro del cuadro de excepción que es 'fin del programa' para que esta declaración se imprima cuando surja la excepción. Ahora, si ocurre una excepción en el cuadro de prueba, el programa se mueve inmediatamente a los bloques de excepción y continúa. Si no ocurre una excepción, el bloque de excepción se omite por completo. Ahora que ocurre la excepción, podemos ver en el código que el valor '6' se ingresó en el cuadro de prueba aunque no esté en la lista de matrices. Como resultado, el código va inmediatamente al cuadro de excepción e imprime la instrucción 'finaliza el programa' en la pantalla de salida.





Las diferentes llamadas a funciones que componen el rastreo están ordenadas de la más reciente a la menos reciente, de abajo hacia arriba. Todas estas operaciones están representadas por sentencias de dos líneas. Cada llamada comienza con el nombre del archivo, el número de secuencia y el nombre del módulo, todos los cuales indican la ubicación del código. Después de eso, muestra la declaración de impresión de excepción 'fin del programa' ya que el valor '6' no estaba en la lista declarada, lo que da como resultado la salida 'índice de lista fuera de rango'.



Ejemplo 2: Imprima Stacktrace en Python utilizando el método Logging.Exception()

En este ejemplo, demostraremos cómo usar el método 'logging.exception()' de Python para generar un seguimiento de pila. El paquete de registro en Python nos permite registrar los errores, así como registrar los errores y las excepciones. Los módulos de registro nos brindan una selección de módulos de registro que incluyen 'depuración', 'información', 'advertencia', 'error' y 'crítico'. Estas son esencialmente capas de módulos de registro, para decirlo de manera simple. Para registrar una excepción con un error en Python, use la función “logging.exception()”. Esta función agrega un informe con el estado de ERROR a este registrador. Se cree que los parámetros son para la depuración. La información sobre la excepción se adjunta al informe de registro. La única ubicación desde la que invocar este procedimiento deben ser los controladores de excepciones.

Ahora, veamos el código. Primero, importamos dos bibliotecas: la primera es de registro y la segunda es de seguimiento. Luego, usamos el método 'basicConfig' con 'logging' y especificamos el nivel como 'logging.Debug'. El único argumento que toma el método “getLogger()” es “nombre”. Por lo tanto, lo usamos cuando usamos la función 'logging.getlogger'. Si se da un nombre, se genera una referencia a una instancia de registrador con ese nombre; de lo contrario, se devuelve la raíz. Muchas operaciones getLogger() hacen referencia al mismo objeto registrador con la misma identidad.

Luego, usamos para probar, y como sabemos en el bloque de prueba, escribimos el código que podría generar una excepción. En este caso, usamos “myfunction()”. Si la situación dada no coincide, se produce una excepción. Luego, el código salta inmediatamente al bloque excepto. En este blog de excepción, utilizamos 'logging.info'. Dentro de él, escribimos el mensaje que queremos imprimir que es 'se produjo una excepción'. Esto se debe a que si ocurre una excepción, simplemente ocurre un error y luego muestra este mensaje en la pantalla. Pero si el error no ocurre, ignora todo el mensaje de excepción.

También configuramos “exc info=True” con el mensaje. Todo el stacktrace se incluirá en el registro cuando la información exc se establezca en True, similar a lo que sucede con 'logger.exception()'. La única distinción es que puede cambiar rápidamente el nivel de registro de error a otra cosa simplemente cambiando el registrador.

Ahora que ocurrió una excepción en la secuencia de comandos, la primera línea de salida es el mensaje 'se produjo una excepción' seguido del nivel de registro que se usó en la secuencia de comandos, que es 'información'. El nombre del registrador aparece como la raíz en este caso. Luego, aparece la llamada de rastreo, que muestra los nombres de módulo, línea y archivo. Finalmente, el mensaje de error 'myfunction' no está definido.

Hablemos de un poco más de código que hace uso del registro. El método de excepción () comienza importando la biblioteca para el registro. A continuación, se inicializan dos variables, 'm' y 'n', y se les asignan los valores de '7' y '0', respectivamente. El bloque try ahora se usa en el paso siguiente. Dentro de él, escribimos el código que podría causar una excepción. Primero, declaramos la variable “o”. Entonces, establecemos que 'm' dividido por 'n'. Esto provoca una excepción porque el denominador es cero y no podemos dividir ningún número por cero, lo que significa que surgirán los errores. Como resultado, el código salta al bloque excepto donde se usa 'logging.error'. El error es el nivel de registro. Si ocurre una excepción, imprimimos un mensaje o una declaración que dice 'se produjo una excepción' y configuramos 'exc info=true'. Si no lo establecemos en verdadero, solo imprime el bloque de excepción y no muestra la información de rastreo.

Debido a que elegimos el nivel 'ERROR' en nuestro script, primero muestra la raíz como el nombre del registrador, seguido del mensaje 'ocurrió una excepción'. A continuación, se muestra la información de seguimiento que incluía el nombre del archivo, el número de línea y el módulo. La siguiente línea muestra un aviso de error ya que el denominador no puede ser cero. Y dado que el denominador es cero en este código, el error se denomina error de divisor de cero.

Conclusión

En este artículo, analizamos el proceso de impresión de un seguimiento de pila en un registro de Python y cómo usar el módulo de seguimiento para crear un seguimiento de pila. En el primer ejemplo, se importó la biblioteca de rastreo y se usaron los métodos de prueba y excepción. El código fue escrito en el cuadro de prueba. Si ocurre una excepción, salta rápidamente al bloque de excepción y muestra la declaración de excepción en la pantalla. En el segundo ejemplo, utilizamos el registro que es similar al primer ejemplo. El método de excepción () utiliza los niveles de registro 'info' y 'error'. Si ocurre una excepción, muestra una declaración de excepción.