"""Logging configuration for the bot.""" import logging import sys from typing import Optional def setup_logging(level: Optional[str] = None) -> None: """Setup logging configuration for the bot. Args: level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) If None, defaults to INFO """ log_level = getattr(logging, level.upper() if level else "INFO", logging.INFO) # Create formatter formatter = logging.Formatter( fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # Create console handler (for Docker stdout/stderr) console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(formatter) console_handler.setLevel(log_level) # Configure root logger root_logger = logging.getLogger() root_logger.setLevel(log_level) root_logger.addHandler(console_handler) # Set specific loggers logging.getLogger("telebot").setLevel(logging.WARNING) # Reduce telebot verbosity logging.getLogger("apscheduler").setLevel(logging.INFO) logging.getLogger("sqlalchemy.engine").setLevel(logging.WARNING) # Reduce SQLAlchemy verbosity def get_logger(name: str) -> logging.Logger: """Get a logger instance for a module. Args: name: Logger name (usually __name__) Returns: Logger instance """ return logging.getLogger(name)