"""Logging configuration for the MCP Hub project.""" import logging import sys from datetime import datetime from pathlib import Path def setup_logging( log_level: str = "INFO", log_to_file: bool = True, log_dir: str = "logs" ) -> logging.Logger: """Set up logging configuration.""" # Create logs directory if it doesn't exist if log_to_file: log_path = Path(log_dir) log_path.mkdir(exist_ok=True) # Create logger logger = logging.getLogger("mcp_hub") logger.setLevel(getattr(logging, log_level.upper())) # Clear any existing handlers logger.handlers = [] # Create formatter formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s" ) # Console handler console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(getattr(logging, log_level.upper())) console_handler.setFormatter(formatter) logger.addHandler(console_handler) # File handler if log_to_file: timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") file_handler = logging.FileHandler( log_path / f"mcp_hub_{timestamp}.log" ) file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger # Create global logger instance logger = setup_logging()