from pathlib import Path import logging from logging.handlers import RotatingFileHandler import tempfile from . import config def _ensure_dir(p: Path) -> Path: p.mkdir(parents=True, exist_ok=True) return p def get_logger(name: str = "launcher") -> logging.Logger: """Configura e restituisce un logger con file di log rotante. Primaria: %LOCALAPPDATA%\MyICR_Suite\launcher_cache\launcher.log Fallback: %TEMP%\MyICR_Suite_launcher\launcher.log """ logger = logging.getLogger(name) # Evita duplicati if logger.handlers: return logger # Scegli percorso log con fallback robusto log_dir: Path try: log_dir = _ensure_dir(config.LOCAL_LAUNCHER_CACHE_DIR) except Exception: temp_base = Path(tempfile.gettempdir()) / "MyICR_Suite_launcher" log_dir = _ensure_dir(temp_base) log_path = log_dir / "launcher.log" handler = RotatingFileHandler( str(log_path), maxBytes=512 * 1024, backupCount=3, encoding="utf-8" ) formatter = logging.Formatter( fmt="%(asctime)s | %(levelname)-8s | %(name)s:%(lineno)d - %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) handler.setFormatter(formatter) logger.setLevel(logging.DEBUG) handler.setLevel(logging.DEBUG) logger.addHandler(handler) logger.propagate = False try: logger.info("Log inizializzato: %s", log_path) except Exception: pass return logger