Curso de Python Intermedio: Comprehensions, Lambdas y Manejo de Errores

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

Cuando hablamos de Python, es muy frecuente usar print en temas como el debug, para mostrar en consola información que nos pueda ser de interés. El caso cambia un poco cuando estamos trabajando con proyectos aun mas grande y que tambien maneje threads y procesos, en estos casos es mucho mejor usar el módulo logging.

Logging

El módulo logging nos ayuda a mostrar información por consola, pero con más características que el print. Lo primero que hay que saber es que tenemos diferentes tipos de mensaje y a cada uno se le asigna un nivel diferente. Los niveles nos ayudarán a identificar los mensajes que se nos muestran, también a saber cuáles niveles de mensajes deseamos ver.

Tipo mensaje Nivel
Debug 10
Info 20
Warning 30
Error 40
Critical 50
import logging

def messages():
    logging.debug("This is a debug message")
    logging.info("This is an info message")
    logging.warning("This is a warning message")
    logging.error("This is an error message")
    logging.critical("This is a critical message")

if __name__=="__main__":
    messages()

De esta forma podremos imprimir cada uno de los tipos de mensajes. Sin embargo, si ejecutamos este fragmento de código, veremos el siguiente resultado:

iUd8xLGhb9.png

Como podemos ver, no se nos muestra los mensajes de tipo info ni debug, esto se debe a que por defecto, el módulo logging solo permite la visualización de los mensajes de nivel 30 o superior. Para cambiar estos valores debemos modificar la configuración base, la cual también nos permite modificar muchos más aspectos.

Configuración

para configurar el módulo logging, debemos usar el método basicConfig y luego indicar que queremos modificar, entre estas configuraciones tenemos:

Configuración Descripción
level Nivel mínimo desde el cual se va a imprimir.
format Formato en el cual se imprime el mensaje.
datefmt Formato en el cual se va a mostrar la fecha (en caso de ser incluida en el formato)
filename Si no es nulo, enviara las salidas a un archivo en lugar de mostrarlos por consola

Para el formato de texto, vamos a contar con algunas variables, las cuales cuentan con nombres específicos y debemos ubicar de la siguiente manera: %(variable_name)s .Si se llega a escribir texto sin esta estructura, se va a imprimir con normalidad.

Estas son algunas de las variables que podemos usar (para todos los siguientes artículos, se estará trabajando con las últimas 4 variables):

Variable Descripción
levelname Tipo de mensaje.
name Nombre del logging.
pathname Ruta del archivo.
filename Nombre del archivo.
asctime Fecha.
funcName Función que se está ejecutando.
message Mensaje personalizado
lineon Lineal que se está ejecutando.
module Modulo que se está ejecutando.
thread Muestra el thread que está funcionando.
threadName Muestra el nombre del thread.
process Muestra el proceso que está funcionando.
processName Muestra el nombre del proceso.

Ejemplos de formatos:

  • "[%(levelname)s] - %(asctime)s -> %(message)s "
  • “%(module)s | %(funcName)s | %(lineon)s -> %(message)s”
  • “%(process)s | %(processName)s | %(asctime)s -> %(message)s”
  • “%(message)s”
  • “%(levelname)s:%(name)s:%(message)s” ----> Este es el formato del mensaje por defecto.

Ahora veremos como se usa la configuración personalizada:

import logging

logging.basicConfig(
    level=logging.DEBUG,
    format=f'[%(levelname)s] | %(processName)s -  %(asctime)s -> %(message)s',
    datefmt='%H:%M:%S',
    #filename='messages.log'
)

def messages():
    logging.debug("This is a debug message")
    logging.info("This is an info message")
    logging.warning("This is a warning message")
    logging.error("This is an error message")
    logging.critical("This is a critical message")

if __name__=="__main__":
    messages()

Como podremos ver, en el parámetro level usamos una constante, nosotros podemos enviar el número del nivel pero es mejor usar las constantes que nos provee el módulo logging.

Si ejecutamos este código, veremos que ahora si imprime todos los mensajes y, además, cambia el formato en el que se muestran los mismos.

4aO10dxkuy.png

Curso de Python Intermedio: Comprehensions, Lambdas y Manejo de Errores

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

0 Comentarios

para escribir tu comentario

Artículos relacionados