"""Application-wide logging configuration (console output + rotating file handler)."""

import logging
from logging.handlers import RotatingFileHandler
from pathlib import Path

LOG_DIR = Path(__file__).resolve().parent.parent / "logs"
LOG_DIR.mkdir(exist_ok=True)
LOG_FILE = LOG_DIR / "app.log"


def setup_logger() -> logging.Logger:
    """Configures global logging for the application."""
    logger = logging.getLogger("CSSModManager")

    if logger.hasHandlers():
        return logger

    logger.setLevel(logging.DEBUG)

    # Format de sortie : [Date] [Niveau] (Fichier:Ligne) Message
    log_format = logging.Formatter(
        "[%(asctime)s] [%(levelname)s] (%(filename)s:%(lineno)d) : %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S",
    )

    # 1. Handler pour la Console (Sortie standard)
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.INFO)
    console_handler.setFormatter(log_format)

    # 2. Handler pour le Fichier (avec rotation pour ne pas saturer le disque)
    # maxBytes=2*1024*1024 (2 Mo par fichier), backupCount=3 (garde 3 fichiers max)
    file_handler = RotatingFileHandler(
        LOG_FILE, maxBytes=2 * 1024 * 1024, backupCount=3, encoding="utf-8"
    )
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(log_format)

    logger.addHandler(console_handler)
    logger.addHandler(file_handler)

    return logger


logger = setup_logger()
