"""
Logging Configuration Module
Provides centralized logging setup with configurable levels and formats.
"""
import logging
from typing import Optional
from .settings import Settings, get_settings
def setup_logging(
level: Optional[str] = None,
format_str: Optional[str] = None,
settings: Optional[Settings] = None
) -> None:
"""
Setup logging configuration for the MCP server.
Args:
level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
format_str: Custom format string for log messages
settings: Settings instance to use (defaults to global settings)
"""
if settings is None:
settings = get_settings()
# Use provided parameters or fall back to settings
log_level = level or settings.log_level
log_format = format_str or settings.log_format
# Convert string level to logging constant
numeric_level = getattr(logging, log_level.upper(), logging.INFO)
# Configure root logger
logging.basicConfig(
level=numeric_level,
format=log_format,
force=True # Override any existing configuration
)
# Set up logger for this package
logger = logging.getLogger("mcp_server")
logger.setLevel(numeric_level)
logger.info(f"Logging configured: level={log_level}, format='{log_format}'")
def get_logger(name: str) -> logging.Logger:
"""
Get a logger instance for the specified name.
Args:
name: Logger name (typically __name__)
Returns:
Configured logger instance
"""
return logging.getLogger(f"mcp_server.{name}")