"""Logging configuration.""" import logging import sys from pathlib import Path from logging.handlers import RotatingFileHandler def setup_logger( name: str = "bot", log_level: int = logging.INFO, log_file: str = "logs/bot.log" ) -> logging.Logger: """ Configure and return logger instance. Args: name: Logger name log_level: Logging level log_file: Path to log file Returns: Configured logger instance """ logger = logging.getLogger(name) logger.setLevel(log_level) # Create formatters console_formatter = logging.Formatter( '%(asctime)s | %(levelname)-8s | %(name)s | %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) file_formatter = logging.Formatter( '%(asctime)s | %(levelname)-8s | %(name)s | %(funcName)s:%(lineno)d | %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # Console handler console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(log_level) console_handler.setFormatter(console_formatter) # File handler if log_file: Path(log_file).parent.mkdir(parents=True, exist_ok=True) file_handler = RotatingFileHandler( log_file, maxBytes=10*1024*1024, # 10MB backupCount=5, encoding='utf-8' ) file_handler.setLevel(log_level) file_handler.setFormatter(file_formatter) logger.addHandler(file_handler) logger.addHandler(console_handler) return logger logger = setup_logger()