"""Configuración de logging con rotación.""" import logging from logging.handlers import RotatingFileHandler from pathlib import Path from typing import Optional from ..constants import LOGS_DIR def setup_logger( name: str, log_file: Optional[str] = None, level: int = logging.INFO, max_bytes: int = 10 * 1024 * 1024, # 10MB backup_count: int = 10 ) -> logging.Logger: """ Configura un logger con rotación de archivos. Args: name: Nombre del logger log_file: Nombre del archivo de log (opcional) level: Nivel de logging max_bytes: Tamaño máximo del archivo antes de rotar backup_count: Número de archivos de backup a mantener Returns: Logger configurado """ logger = logging.getLogger(name) logger.setLevel(level) # Evitar duplicar handlers if logger.handlers: return logger # Formato formatter = logging.Formatter( '%(asctime)s | %(name)s | %(levelname)s | %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # Handler de consola console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) logger.addHandler(console_handler) # Handler de archivo (si se especifica) if log_file: LOGS_DIR.mkdir(parents=True, exist_ok=True) log_path = LOGS_DIR / log_file file_handler = RotatingFileHandler( log_path, maxBytes=max_bytes, backupCount=backup_count, encoding='utf-8' ) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger # Logger principal de la aplicación app_logger = setup_logger("CloudRestoreAS", "app.log")