Skip to main content
Glama
logging_config.py3.03 kB
"""Logging configuration for Outlook MCP Server.""" import logging import os import sys from typing import Optional # Environment variable to control debug logging DEBUG_ENV_VAR = "OUTLOOK_MCP_DEBUG" LOG_LEVEL_ENV_VAR = "OUTLOOK_MCP_LOG_LEVEL" # Default log format DEFAULT_LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" DEBUG_LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s" def get_log_level() -> int: """Get the configured log level from environment or defaults. Returns: int: Logging level constant (e.g., logging.DEBUG, logging.INFO) """ # Check for explicit log level environment variable log_level_str = os.getenv(LOG_LEVEL_ENV_VAR, "").upper() if log_level_str: level_map = { "DEBUG": logging.DEBUG, "INFO": logging.INFO, "WARNING": logging.WARNING, "ERROR": logging.ERROR, "CRITICAL": logging.CRITICAL, } return level_map.get(log_level_str, logging.INFO) # Check for debug mode environment variable if os.getenv(DEBUG_ENV_VAR, "").lower() in ("1", "true", "yes", "on"): return logging.DEBUG return logging.INFO def get_log_format(debug_mode: bool = False) -> str: """Get the appropriate log format based on debug mode. Args: debug_mode: Whether debug mode is enabled Returns: str: Log format string """ return DEBUG_LOG_FORMAT if debug_mode else DEFAULT_LOG_FORMAT def configure_logging(level: Optional[int] = None, format_string: Optional[str] = None) -> None: """Configure the root logger with the specified settings. Args: level: Log level to set (defaults to value from get_log_level()) format_string: Log format string (defaults to value from get_log_format()) """ if level is None: level = get_log_level() debug_mode = level == logging.DEBUG if format_string is None: format_string = get_log_format(debug_mode) # Configure root logger logging.basicConfig( level=level, format=format_string, stream=sys.stderr, force=True ) def get_logger(name: str) -> logging.Logger: """Get a logger instance with the specified name. Args: name: Logger name (typically __name__) Returns: logging.Logger: Configured logger instance """ return logging.getLogger(name) def is_debug_enabled() -> bool: """Check if debug logging is enabled. Returns: bool: True if debug logging is enabled """ return get_log_level() == logging.DEBUG def set_debug_mode(enabled: bool = True) -> None: """Enable or disable debug mode at runtime. Args: enabled: Whether to enable debug mode """ level = logging.DEBUG if enabled else logging.INFO configure_logging(level=level) # Auto-configure logging on module import configure_logging()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/marlonluo2018/outlook-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server