import logging import sys from logging.handlers import RotatingFileHandler from app.core.config import Config def setup_logging(name: str = "booksage") -> logging.Logger: """ Set up logging configuration with file and console handlers. Args: name: Logger name Returns: Configured logger instance """ # Ensure logs directory exists Config.LOGS_DIR.mkdir(exist_ok=True) logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) # Prevent adding handlers multiple times if logger.handlers: return logger # Log format formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) # File handler with rotation log_file = Config.LOGS_DIR / "app.log" file_handler = RotatingFileHandler( log_file, maxBytes=10 * 1024 * 1024, # 10MB backupCount=5, encoding="utf-8" ) file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) # Console handler console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(logging.INFO) console_handler.setFormatter(formatter) # Add handlers logger.addHandler(file_handler) logger.addHandler(console_handler) return logger # Create default logger instance logger = setup_logging()