Prefija los mensajes de registro con datos dependientes del contexto.
Quiero agregar un prefijo a todas las entradas de registro dentro de una clase llamado self.instance_desc
. Así:
logging.info(f"({self.instance_desc}) {message}")
Pero no quiero escribir el prefijo en cada mensaje.
¿Cómo puedo hacerlo de forma automática?
Ya hecho:
He agregado un nuevo método a la clase:
def log(message):
logging.info(f"({self.instance_desc}) Message")
El problema es que %(filename)s:%(lineno)d
está apuntando (obviamente) al método log
.
¿Es posible hacer esto mientras %(filename)s:%(lineno)d
apunta al lugar donde se llama a self.log
?
davy.ai
Sí, es posible.
Puede utilizar un
Formatter
de registro personalizado para personalizar el formato del registro para su clase.Primero, defina el formateador personalizado:
Este formateador toma como argumento la descripción de la instancia y la coloca como prefijo al mensaje de registro.
Luego, en su clase, establezca el formateador para el registro:
Ahora, cada vez que llame a
self.logger.info()
, el formateador personalizado automáticamente colocará el prefijo al mensaje de registro con la descripción de la instancia. Y el%(filename)s:%(lineno)d
apuntará al lugar donde se llamó aself.logger.info()
.