Logger¶
Módulo: src/utils/logger.py
Descripción¶
Proporciona un sistema de logging estructurado con salida a consola y archivos, con formato consistente para todo el pipeline.
Función Principal¶
setup_logger¶
from src.utils.logger import setup_logger
logger = setup_logger(
name="mi_modulo",
log_dir="./data/logs",
level="INFO",
console=True,
file=True
)
Parámetros¶
| Parámetro | Tipo | Descripción | Valor por defecto |
|---|---|---|---|
name |
str | Nombre del logger | Requerido |
log_dir |
str/Path | Directorio para archivos de log | None |
level |
str | Nivel de logging | "INFO" |
console |
bool | Habilitar salida a consola | True |
file |
bool | Habilitar salida a archivo | True |
Niveles Disponibles¶
| Nivel | Uso |
|---|---|
DEBUG |
Información detallada para debugging |
INFO |
Confirmación de operaciones normales |
WARNING |
Situaciones inesperadas pero manejables |
ERROR |
Errores que impiden una operación |
CRITICAL |
Errores graves que detienen el programa |
Formato de Salida¶
Consola¶
Archivo¶
Los archivos se crean con el nombre del logger:
Ejemplo Completo¶
from src.utils.logger import setup_logger
# Configurar logger
logger = setup_logger(
name="mi_pipeline",
log_dir="./data/logs",
level="DEBUG"
)
# Usar logger
logger.info("Iniciando proceso")
logger.debug(f"Parámetros: {params}")
try:
result = process_data()
logger.info(f"Procesados {len(result)} elementos")
except Exception as e:
logger.error(f"Error en proceso: {e}")
raise
logger.info("Proceso completado")
Integración con Módulos¶
Todos los módulos principales aceptan un logger opcional:
from src.utils.logger import setup_logger
from src.api_client import iNaturalistAPIClient
logger = setup_logger("pipeline", log_dir="./logs")
client = iNaturalistAPIClient(logger=logger)
# Los logs del cliente usarán el mismo logger
Rotación de Logs¶
Para pipelines de larga duración, considera implementar rotación: