"""
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 (respeta el volumen de Docker /app/data)
_DEFAULT_LOG_DIR = "/app/data/logs"
_LOCAL_LOG_DIR   = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs")
LOG_DIR = _DEFAULT_LOG_DIR if os.path.exists("/app/data") else _LOCAL_LOG_DIR
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")
