Logging y debugging en Python: observar sistemas sin adivinar

Aprende a reemplazar prints por logging estructurado, usar niveles correctamente y depurar fallos con estrategia reproducible.

En producción no puedes depurar con prints dispersos; necesitas trazabilidad con niveles y contexto.

`logging` permite clasificar eventos (`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`) y filtrar por severidad.

Un buen log responde tres preguntas: qué pasó, dónde pasó y con qué datos relevantes ocurrió.

Debugging profesional implica reproducir, aislar hipótesis, instrumentar y validar fix con evidencia.

  • No todos los mensajes tienen la misma importancia; clasifícalos.
  • `DEBUG` sirve para detalle interno en desarrollo, `INFO` para eventos normales, `WARNING` para situaciones anómalas tolerables.
  • `ERROR` y `CRITICAL` representan fallos relevantes que requieren atención inmediata o escalada.
  • Si todo está en el mismo nivel, tus logs pierden valor operativo.
  • Un log sin contexto obliga a adivinar y retrasa diagnóstico.

1) Logging con niveles: del ruido a la señal

No todos los mensajes tienen la misma importancia; clasifícalos.

`DEBUG` sirve para detalle interno en desarrollo, `INFO` para eventos normales, `WARNING` para situaciones anómalas tolerables.

`ERROR` y `CRITICAL` representan fallos relevantes que requieren atención inmediata o escalada.

Si todo está en el mismo nivel, tus logs pierden valor operativo.

2) Añadir contexto a los logs

Un log sin contexto obliga a adivinar y retrasa diagnóstico.

Incluye identificadores de operación (request_id, user_id, job_id) para correlacionar eventos.

Evita loggear datos sensibles (tokens, contraseñas, PII sin anonimizar).

Contexto bien elegido acelera RCA (root cause analysis) cuando algo falla.

3) Estrategia de debugging reproducible

Depurar bien es un proceso, no improvisación.

Paso 1: reproduce el fallo con caso mínimo confiable.

Paso 2: formula hipótesis y añade instrumentación (logs, asserts, breakpoints).

Paso 3: aplica fix mínimo, valida con test y revisa impacto lateral.

Herramientas como `pdb` o breakpoints del IDE son útiles, pero sin método no escalan.

  • No tapes errores con `except` genérico sin análisis.
  • Loggea eventos de negocio y técnicos por separado.
  • Valida fix con prueba automatizada cuando sea posible.
  • Documenta causa raíz y prevención futura.
Python
18

Logging y debugging en Python: observar sistemas sin adivinar

Aprende a reemplazar prints por logging estructurado, usar niveles correctamente y depurar fallos con estrategia reproducible.

Código del tema: Automatizacion y codigo legible en Python

📘 Teoría

1) Logging con niveles: del ruido a la señal

No todos los mensajes tienen la misma importancia; clasifícalos.

1

`DEBUG` sirve para detalle interno en desarrollo, `INFO` para eventos normales, `WARNING` para situaciones anómalas tolerables.

2

`ERROR` y `CRITICAL` representan fallos relevantes que requieren atención inmediata o escalada.

3

Si todo está en el mismo nivel, tus logs pierden valor operativo.

2) Añadir contexto a los logs

Un log sin contexto obliga a adivinar y retrasa diagnóstico.

Incluye identificadores de operación (request_id, user_id, job_id) para correlacionar eventos.

Evita loggear datos sensibles (tokens, contraseñas, PII sin anonimizar).

Contexto bien elegido acelera RCA (root cause analysis) cuando algo falla.

1

Log de operación con metadatos

Información suficiente para trazar una petición.

2

Registrar excepción con stacktrace

Usa `logger.exception(...)` dentro de `except`.

3) Estrategia de debugging reproducible

Depurar bien es un proceso, no improvisación.

Paso 1: reproduce el fallo con caso mínimo confiable.

Paso 2: formula hipótesis y añade instrumentación (logs, asserts, breakpoints).

Paso 3: aplica fix mínimo, valida con test y revisa impacto lateral.

Herramientas como `pdb` o breakpoints del IDE son útiles, pero sin método no escalan.

  • No tapes errores con `except` genérico sin análisis.
  • Loggea eventos de negocio y técnicos por separado.
  • Valida fix con prueba automatizada cuando sea posible.
  • Documenta causa raíz y prevención futura.

🧪 Aprende probando

Ejemplo Ejemplo: pipeline con logs por etapa Instrumenta fases de proceso para localizar fallos sin inspección manual extensa.

🏁 Retos

Reto Reto: configura nivel INFO correctamente Completa la configuración de logging para que los mensajes informativos se registren.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre Python.

Test de Python

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com