import logging import sys from pathlib import Path def setup_logger(name: str = None, level: str = "INFO", log_file: str = None) -> logging.Logger: """ Set up logger with consistent configuration across the application. Args: name: Logger name (defaults to root logger) level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) log_file: Optional file path for logging to file Returns: Configured logger instance """ logger = logging.getLogger(name) # Prevent adding multiple handlers if logger already configured if logger.handlers: return logger logger.setLevel(getattr(logging, level.upper())) # Create formatter formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # Console handler console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(formatter) logger.addHandler(console_handler) # File handler (optional) if log_file: # Create log directory if it doesn't exist Path(log_file).parent.mkdir(parents=True, exist_ok=True) file_handler = logging.FileHandler(log_file) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger # Initialize the main application logger main_logger = setup_logger("telegram-bot", level="INFO", log_file=None)