IOKELU
Nivel: Avanzado – Guía 16
💡 Prueba el código:
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

8. Ejercicios

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")

Siguiente guía

Testing avanzado →