"""Logging configuration.""" import logging import sys from typing import Optional def setup_logging(log_level: str = "INFO") -> None: """ Configure logging for the application. Args: log_level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) """ # Convert string level to logging constant numeric_level = getattr(logging, log_level.upper(), logging.INFO) # Configure root logger logging.basicConfig( level=numeric_level, format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S", handlers=[ logging.StreamHandler(sys.stdout) ] ) # Set aiogram logger level logging.getLogger("aiogram").setLevel(numeric_level) # Reduce verbosity of some libraries logging.getLogger("apscheduler").setLevel(logging.WARNING) logging.getLogger("asyncio").setLevel(logging.WARNING) def get_logger(name: str) -> logging.Logger: """ Get a logger instance. Args: name: Logger name (usually __name__) Returns: Logger instance """ return logging.getLogger(name)