Para que, dependiendo el formatter usado, aparezca algo así:
2024-10-17 08:30:23 [INFO] - Este log lo verán en 'La Naturaleza del Software '
Qué lo hace diferente? Y por qué es buena práctica?
En el clásico se formatea así:
"un string: %s" % "hola"
Es decir formateas usando % como placeholder y % como operador para "ejecutar" el formateo.
En logging usas % como placeholder y no mandas el operador %, solo lo que quieres sustituir como argumentos de la función de log que uses.
Por qué es buena práctica? Porque dependiendo el nivel de logging que desees, podría ser que ni siquiera ese log se vaya a pintar. Suponiendo que usas logger.debug a lo mejor nunca los ves. O tienes el nivel en ERROR, los INFO ni siquiera se pintarán .
Al usar ese "formateo", propio de logging, las variables ni se meterán al intérprete de python.
Usando otro mecanismo, el parseo de strings de python obliga a python a meter el procesamiento en el string y gastar cómputo en algo que no terminará pintando
Quizá sea algo irrelevante ahorrarse cómputo en eso, pero a veces si es crítico.
Al usar logs con la biblioteca incluida en python logging: podrías teóricamente formatear strings de cualquier manera.
Pero la buena práctica del uso de esta librería es la siguiente, muy similar, más no igual, al formateo "clásico":
digamos que una variable a loggear es
lnds="La Naturaleza del Software"
Entonces se debe loggear con logging así:
logger.info("Este log lo verán en '%s'", lnds)
Para que, dependiendo el formatter usado, aparezca algo así:
2024-10-17 08:30:23 [INFO] - Este log lo verán en 'La Naturaleza del Software '
Qué lo hace diferente? Y por qué es buena práctica?
En el clásico se formatea así:
"un string: %s" % "hola"
Es decir formateas usando % como placeholder y % como operador para "ejecutar" el formateo.
En logging usas % como placeholder y no mandas el operador %, solo lo que quieres sustituir como argumentos de la función de log que uses.
Por qué es buena práctica? Porque dependiendo el nivel de logging que desees, podría ser que ni siquiera ese log se vaya a pintar. Suponiendo que usas logger.debug a lo mejor nunca los ves. O tienes el nivel en ERROR, los INFO ni siquiera se pintarán .
Al usar ese "formateo", propio de logging, las variables ni se meterán al intérprete de python.
Usando otro mecanismo, el parseo de strings de python obliga a python a meter el procesamiento en el string y gastar cómputo en algo que no terminará pintando
Quizá sea algo irrelevante ahorrarse cómputo en eso, pero a veces si es crítico.