"""Logging configuration""" import logging from logging.handlers import RotatingFileHandler from rich.logging import RichHandler import os def setup_logger( name: str = None, level: str = "INFO", log_file: str = "data/logs/game.log", console: bool = True, max_file_size_mb: int = 10, backup_count: int = 5 ) -> logging.Logger: """ Setup logger with file and console handlers Args: name: Logger name level: Logging level (DEBUG, INFO, WARNING, ERROR) log_file: Path to log file console: Enable console logging max_file_size_mb: Max log file size in MB backup_count: Number of backup files to keep Returns: Configured logger """ logger = logging.getLogger(name) logger.setLevel(getattr(logging, level.upper())) # Remove existing handlers logger.handlers.clear() # File handler with rotation os.makedirs(os.path.dirname(log_file), exist_ok=True) file_handler = RotatingFileHandler( log_file, maxBytes=max_file_size_mb * 1024 * 1024, backupCount=backup_count ) file_formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) file_handler.setFormatter(file_formatter) logger.addHandler(file_handler) # Console handler with rich formatting if console: console_handler = RichHandler(rich_tracebacks=True) console_handler.setFormatter(logging.Formatter('%(message)s')) logger.addHandler(console_handler) return logger