Files
traduccion_bots/utils/logger.py

51 lines
1.7 KiB
Python

"""
Módulo de Logging Centralizado - Bots de Traducción
Proporciona loggers rotativos por día para Discord, Telegram y Panel Web.
"""
import logging
import os
from logging.handlers import TimedRotatingFileHandler
# Directorio base para almacenar los logs
LOG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs")
os.makedirs(LOG_DIR, exist_ok=True)
def _create_logger(name: str, filename: str, level=logging.INFO) -> logging.Logger:
"""Crea y configura un logger con salida a archivo rotativo y a consola."""
logger = logging.getLogger(name)
if logger.handlers:
return logger # Ya está configurado, no duplicar handlers
logger.setLevel(level)
formatter = logging.Formatter(
"[%(asctime)s] %(levelname)s [%(name)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S"
)
# Handler de archivo: rota a medianoche, guarda los últimos 14 días
file_handler = TimedRotatingFileHandler(
os.path.join(LOG_DIR, filename),
when="midnight",
interval=1,
backupCount=14,
encoding="utf-8"
)
file_handler.setFormatter(formatter)
file_handler.suffix = "%Y-%m-%d.log"
# Handler de consola para visualización en Docker
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger
# Loggers disponibles para cada componente del ecosistema
discord_logger = _create_logger("discord_bot", "discord.log")
telegram_logger = _create_logger("telegram_bot", "telegram.log")
panel_logger = _create_logger("panel_web", "panel.log")