DEV Community

Cover image for Logging con Python
Javier Rodriguez
Javier Rodriguez

Posted on

Logging con Python

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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 es log-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, siendo logging.INFO un 20. Si necesitamos debugguear, al menos necesito un 10. Entonces, con logging.DEBUG nos aseguramos que niveles con valor 10 en adelante se registren.
  • format: formato en la que se registran los logs, en este caso es fecha 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)