Ir al contenido
  1. Posts/

La Guía Completa de Logging en Python

··246 palabras·2 mins·

📋 ¿Seguís usando print() para debuggear en Python? Es hora de actualizarse.

Los print() statements funcionan en desarrollo, pero en producción son una trampa: no tienen niveles, no saben de dónde vienen y no se guardan automáticamente. El módulo logging de Python es la solución correcta.

📊 Los 5 niveles de log y cuándo usarlos:

NivelUso
DEBUGDetalles técnicos durante desarrollo (variables, iteraciones)
INFOOperaciones normales (inicio del servidor, transacción exitosa)
WARNINGAlgo inesperado pero manejable (disco lleno, API deprecada)
ERRORAlgo falló pero la app continúa (query a DB falló)
CRITICALFalla grave, posible caída del sistema

🔧 Ejemplo básico:

import logging
logger = logging.getLogger('mi_app')
logger.setLevel(logging.DEBUG)

# Handler para consola (INFO+) y archivo (DEBUG+)
console_handler = logging.StreamHandler()
file_handler = logging.FileHandler('app.log')
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

⚠️ El error más común al loguear excepciones:

# MAL: solo guarda el mensaje de error
logger.error(f'Error: {e}')

# BIEN: guarda el stack trace completo
logger.error(f'Error procesando usuario {user_id}', exc_info=True)

🔍 Explicación en pocas palabras

Un “stack trace” es el historial de llamadas de funciones que llevó al error — básicamente el mapa del crimen. Con exc_info=True, el log incluye exactamente en qué línea falló y por qué, sin necesidad de reproducir el error localmente.

Más información en el link 👇

También publicado en LinkedIn.
Juan Pedro Bretti Mandarano
Autor
Juan Pedro Bretti Mandarano