Ejecuta cualquier ejemplo en nuestra consola interactiva: Abrir consola de Python →
Logging avanzado en Python
El módulo logging permite registrar eventos de forma profesional. En esta guía aprenderás a usar loggers personalizados, handlers, formatters, rotación de logs, niveles avanzados y buenas prácticas para aplicaciones reales.
Tabla de contenidos
- Niveles de logging
- Logger básico
- Handlers
- Formatters
- Rotación de logs
- Loggers jerárquicos
- Buenas prácticas
- Ejercicios
- Mini‑proyecto
1. Niveles de logging
import logging
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
2. Logger básico
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)
logging.info("Inicio del sistema")
3. Handlers
import logging
logger = logging.getLogger("app")
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler("app.log")
logger.addHandler(handler)
logger.debug("Mensaje debug")
4. Formatters
import logging
logger = logging.getLogger("formato")
handler = logging.StreamHandler()
formatter = logging.Formatter("%(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.warning("Advertencia")
5. Rotación de logs
import logging
from logging.handlers import RotatingFileHandler
handler = RotatingFileHandler("rot.log", maxBytes=200, backupCount=3)
logger = logging.getLogger("rot")
logger.addHandler(handler)
for i in range(100):
logger.warning("Mensaje %s", i)
6. Loggers jerárquicos
import logging
padre = logging.getLogger("app")
hijo = logging.getLogger("app.db")
padre.setLevel(logging.INFO)
hijo.info("Conectando a la base de datos")
7. Buenas prácticas
- Usa loggers por módulo.
- No uses print() en producción.
- Usa rotación para evitar archivos gigantes.
- Incluye timestamps y niveles.
- Evita logs sensibles (contraseñas, tokens).
8. Ejercicios
- Crea un logger con dos handlers.
- Usa RotatingFileHandler.
- Crea un formatter personalizado.
- Implementa un logger jerárquico.
- Haz un logger para errores críticos.
# dos handlers
logger.addHandler(logging.StreamHandler())
# formatter
logging.Formatter("%(levelname)s - %(message)s")
9. Mini‑proyecto: Sistema de logging modular
import logging
from logging.handlers import RotatingFileHandler
def crear_logger(nombre):
logger = logging.getLogger(nombre)
logger.setLevel(logging.INFO)
handler = RotatingFileHandler(f"{nombre}.log", maxBytes=5000, backupCount=2)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
app_log = crear_logger("app")
db_log = crear_logger("db")
app_log.info("Inicio del sistema")
db_log.warning("Consulta lenta detectada")