Logo

dev-resources.site

for different kinds of informations.

Logging con Python

Published at
10/13/2024
Categories
python
logging
Author
javicerodriguez
Categories
2 categories in total
python
open
logging
open
Author
15 person written this
javicerodriguez
open
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.

logging Article's
30 articles in total
Favicon
🐹 Golang Integration with Kafka and Uber ZapLog 📨
Favicon
Mastering GoFrame Logging: From Zero to Hero
Favicon
Quickly and easily filter your Amazon CloudWatch logs using Logs Insights
Favicon
Avoiding console.log in Production: Best Practices for Robust Logging
Favicon
Freeware: Java Utility Package (Version 2024.12.08) released
Favicon
Kubernetes DaemonSets: Managing System-Level Components Across Every Node
Favicon
AWS CloudWatch: Implementing Data Protection Policy for Sensitive Log Data!
Favicon
Mastering Python Logging: From Basics to Advanced Techniques
Favicon
Docker Logging Drivers: A Comprehensive Guide for Effective Log Management
Favicon
How to Contact Robinhood Support Without Logging In
Favicon
Best Practices for Effective Logging Strategies
Favicon
How EKF Simplifies Logging
Favicon
Introducing implicit contexts in LogTape 0.7.0
Favicon
Simple Python Logging - and a digression on dependencies, trust, and Copy/pasting code
Favicon
Creating a Robust Logging System in C
Favicon
Understanding Logging in Kubernetes - From Containers to Nodes
Favicon
Making Wooster Talk: A Deep Dive into Structured Logging
Favicon
Logging con Python
Favicon
Freeware: Java Utility Package (Version 2024.10.26) released
Favicon
Is your Java log utility class reporting itself as the source of your logs? Learn how to fix it!
Favicon
Golang: Importância de planejar como exibir logs em aplicações de uso intenso
Favicon
Docker Advance Part 2: Docker Logging
Favicon
System Design 10 - Distributed Logging and Monitoring: Keeping an Eye on Your System’s Every Move
Favicon
Mask logs using logstash logback in java with regex
Favicon
Observability - 5(Logging using EFK)
Favicon
Observability
Favicon
Software Devs Picked These 2 Log Formats
Favicon
Error Handling and Logging in Node.js Applications
Favicon
Logging in Python: Best Practices
Favicon
microlog 6: New feature – Log Topics

Featured ones: