
📋 ¿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:
| Nivel | Uso |
|---|---|
DEBUG | Detalles técnicos durante desarrollo (variables, iteraciones) |
INFO | Operaciones normales (inicio del servidor, transacción exitosa) |
WARNING | Algo inesperado pero manejable (disco lleno, API deprecada) |
ERROR | Algo falló pero la app continúa (query a DB falló) |
CRITICAL | Falla 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.

