import logging from logging.handlers import RotatingFileHandler from pathlib import Path LOG_DIR = Path("logs") LOG_DIR.mkdir(exist_ok=True) LOG_FILE = LOG_DIR / "app.log" def get_logger(name: str = "bg_removal_app") -> logging.Logger: logger = logging.getLogger(name) logger.setLevel(logging.INFO) # Prevent duplicate handlers (important with Streamlit reruns) if logger.handlers: return logger formatter = logging.Formatter("[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s") # File handler (rotating) file_handler = RotatingFileHandler( LOG_FILE, maxBytes=5 * 1024 * 1024, # 5 MB backupCount=5, encoding="utf-8", ) file_handler.setFormatter(formatter) file_handler.setLevel(logging.INFO) # Console handler (shows in terminal) console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) console_handler.setLevel(logging.INFO) logger.addHandler(file_handler) logger.addHandler(console_handler) return logger