Logs, logging. Qué es y como registrar eventos con Python
Crear logs utilizando logging nos permite un montón de funcionalidades y flexibilidad en el código. En este breve artículo te muestro lo básico y un poco más para empezar a incorporarlo en tus proyectos.
Qué es logging? Y un log?
Logging es una forma de monitorear eventos. Estos eventos son visibles mediante un mensaje descriptivo, con cierta información variable (el valor de alguna variable o el resultado de una función) y con cierto nivel de importancia.
Un log es como un print en Python, pero la diferencia es que no necesariamente se imprimen en pantalla y pueden guardar estos registros en algún archivo conocido.
Cómo lo puedo usar?
Usaremos la librería logging, que ya viene de forma nativa en Python:
import logging
logging.basicConfig(
filename="log-de-hoy.log",
encoding="utf-8",
level=logging.DEBUG,
format="%(asctime)s %(levelname)s %(message)s"
)
def add(a, b):
try:
result = a + b
logging.info(f"Adding {a} and {b}. Result: {result}")
except TypeError:
result = None
logging.error("The values should be numeric")
return result
print(add(2, 3)) # 5
print(add(2, "3")) # None
Si ejecutamos esto, se genera un archivo llamado log-de-hoy.log
:
2023-12-08 11:56:30,544 INFO Adding 2 and 3. Result: 5
2023-12-08 11:56:30,544 ERROR The values should be numeric
Explicación
👉🏻 Iniciamos configuración básica: con logging.basicConfig
declaramos:
-
filename
: nombre del archivo en particular que queramos agregar los registros (para el ejemplo el nombre eslog-de-hoy.log
, pero lo ideal es que tenga un nombre descriptivo con la fecha del día) -
encoding
: tipo de formato en el que guardamos cada log -
level
: definimos desde que nivel queremos observar. Los diferentes niveles están en su documentación y vas a ver que tienen un valor numérico, siendologging.INFO
un 20. Si necesitamos debugguear, al menos necesito un 10. Entonces, conlogging.DEBUG
nos aseguramos que niveles con valor 10 en adelante se registren. -
format
: formato en la que se registran los logs, en este caso esfecha nivel mensaje
👉🏻 Registramos el resultado de la suma con nivel info
👉🏻 Registramos el error de sumar un int y un string con nivel error
Para qué usar logging?
Tal vez ya te lo puedas imaginar, ya que es una herramienta poderosa que nos va a ayudar a identificar anomalías rápidamente. Algunos de los casos de usos para usarlo son:
- 🐞 Debugging y troubleshooting
- 📈 Monitoreo y análisis de performance
- 🏢 Auditoría y compliance
- 👮 Seguridad y detección de anomalías
Para terminar…
Es fácil de implementar, no? Es un re plus integrarlo en cualquier proyecto y dejar de usar tantos prints 😉.
El módulo logging ofrece mucho más de lo poco que mostré acá. Pero esto poco es más que suficiente! De ser necesario, la documentación explica bastante bien otros casos, métodos, configs y demás.
Top comments (0)