# core/logger_helper.py import logging from logging.handlers import RotatingFileHandler from pathlib import Path def setup_logger(log_folder: Path, log_file_name: str = "conversion.log", level=logging.INFO) -> logging.Logger: """ Sets up a logger that prints to console and writes to a rotating log file. """ log_folder.mkdir(parents=True, exist_ok=True) log_file = log_folder / log_file_name logger = logging.getLogger("conversion_logger") logger.setLevel(level) logger.propagate = False # Prevent duplicate logging if root logger exists # Formatter with timestamp formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S") # Console handler console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) console_handler.setLevel(level) # File handler with rotation (max 5 MB per file, keep 3 backups) file_handler = RotatingFileHandler(log_file, maxBytes=5*1024*1024, backupCount=3, encoding="utf-8") file_handler.setFormatter(formatter) file_handler.setLevel(level) # Add handlers if not logger.handlers: logger.addHandler(console_handler) logger.addHandler(file_handler) return logger