Skip to main content
Glama
logger.py2.66 kB
"""Logging utilities for Writer MCP.""" import logging import sys from typing import Optional from ..config import settings def get_logger(name: Optional[str] = None) -> logging.Logger: """Get a configured logger instance. Args: name: Logger name, defaults to the calling module name Returns: Configured logger instance """ logger = logging.getLogger(name or __name__) # Only configure if not already configured if not logger.handlers: # Set log level log_level = getattr(logging, settings.log_level.upper(), logging.INFO) logger.setLevel(log_level) # Create console handler handler = logging.StreamHandler(sys.stdout) handler.setLevel(log_level) # Create formatter if settings.is_development(): # Detailed format for development formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s" ) else: # Simpler format for production formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) handler.setFormatter(formatter) logger.addHandler(handler) # Prevent propagation to avoid duplicate logs logger.propagate = False return logger def setup_logging() -> None: """Setup global logging configuration.""" # Configure root logger root_logger = logging.getLogger() # Set log level log_level = getattr(logging, settings.log_level.upper(), logging.INFO) root_logger.setLevel(log_level) # Remove existing handlers for handler in root_logger.handlers[:]: root_logger.removeHandler(handler) # Create console handler handler = logging.StreamHandler(sys.stdout) handler.setLevel(log_level) # Create formatter if settings.is_development(): formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s" ) else: formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) handler.setFormatter(formatter) root_logger.addHandler(handler) # Suppress noisy third-party loggers in production if settings.is_production(): logging.getLogger("urllib3").setLevel(logging.WARNING) logging.getLogger("requests").setLevel(logging.WARNING) logging.getLogger("psycopg2").setLevel(logging.WARNING)

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/huangjien/writer-mcp'

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