Tras muchas idas y venidas con la gestión de logs en python, he llegado a este tutorial de python que resume bastante bien la gestión más básica que se puede hacer en una aplicación con los logs:
En mi caso, los requisitos son:
– El log se guarda en fichero.
– El fichero debe rotar.
– Desde cualquier clase del workspace se puede acceder al log
import logging
import logging.handlers as handlers
# Se le puede poner cualquier nombre
logger = logging.getLogger(‘mi_app_name’)
logger.setLevel(logging.INFO)
#Log handler to file:
logHandler = handlers.RotatingFileHandler(‘mi_archivo_salida.log’, maxBytes=1000, backupCount=2)
logHandler.setLevel(logging.INFO)
# output format
formatter = logging.Formatter(‘%(asctime)s – %(name)s – %(levelname)s – %(message)s’)
logHandler.setFormatter(formatter)
logger.addHandler(logHandler)
# Comprobar que todos los logs van al mismo fichero:
logger.info(“Primer mensaje al log de tipo INFO”)
logger.error(“Primer mensaje al log de tipo ERROR”)
En cada clase que se vaya a usar el log, se instancia en el init, y luego se usa como un atributo de la clase:
class ejemplo:
“”” Clase de ejemplo para ver el log “””
def __init__(self):
“””Inicializa el objeto “””
self.logger = logging.getLogger(‘mi_app_name’) # Configurar el log.
def metodo1. (self):
“”” Metodo 1 “””
self.logger.info(‘Mensaje de ejemplo 1’)
Para saber mucho más sobre los logs en python: https://docs.python.org/3/howto/logging-cookbook.html