import logging import os import sys _LOGGER_NAMESPACE = "o11y_mcp_server" def configure_logging() -> None: level_name = (os.getenv("MCP_SERVER_LOG_LEVEL") or "INFO").upper() level = getattr(logging, level_name, logging.INFO) formatter = logging.Formatter("%(asctime)s %(levelname)s %(name)s %(message)s") root = logging.getLogger(_LOGGER_NAMESPACE) if not root.handlers: handler = logging.StreamHandler(sys.stderr) handler.setFormatter(formatter) root.addHandler(handler) log_file = os.getenv("MCP_SERVER_LOG_FILE") if log_file and not any(isinstance(h, logging.FileHandler) for h in root.handlers): file_handler = logging.FileHandler(log_file) file_handler.setFormatter(formatter) root.addHandler(file_handler) root.setLevel(level) def get_logger(name: str) -> logging.Logger: configure_logging() return logging.getLogger(f"{_LOGGER_NAMESPACE}.{name}")