Skip to main content
Glama
logger.py2.22 kB
""" Centralized Logging Configuration for MCP Server All logs are stored in ~/Documents/pbdb/logs/ """ import logging import os from datetime import datetime from pathlib import Path # Log directory - centralized in pbdb LOG_DIR = os.path.join(os.path.expanduser('~'), 'Documents', 'pbdb', 'logs') os.makedirs(LOG_DIR, exist_ok=True) # Log file with date LOG_FILE = os.path.join(LOG_DIR, f'mcp_server_{datetime.now().strftime("%Y%m%d")}.log') # Create formatter formatter = logging.Formatter( '%(asctime)s | %(levelname)-8s | %(name)-20s | %(funcName)-25s | %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # File handler file_handler = logging.FileHandler(LOG_FILE, encoding='utf-8') file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) # Console handler (for debugging) console_handler = logging.StreamHandler() console_handler.setLevel(logging.WARNING) console_handler.setFormatter(formatter) def get_logger(name: str) -> logging.Logger: """Get a configured logger for a module""" logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) # Avoid adding handlers multiple times if not logger.handlers: logger.addHandler(file_handler) logger.addHandler(console_handler) return logger def log_tool_call(logger: logging.Logger, tool_name: str, arguments: dict, result: dict): """Log a tool call with its arguments and result""" success = result.get('success', False) if isinstance(result, dict) else False if success: logger.info(f"TOOL: {tool_name} | ARGS: {arguments} | STATUS: SUCCESS") else: error = result.get('error', 'Unknown error') if isinstance(result, dict) else str(result) logger.error(f"TOOL: {tool_name} | ARGS: {arguments} | STATUS: FAILED | ERROR: {error}") def log_exception(logger: logging.Logger, context: str, exception: Exception): """Log an exception with full traceback""" import traceback logger.error(f"EXCEPTION in {context}: {str(exception)}") logger.debug(f"TRACEBACK:\n{traceback.format_exc()}") # Create main server logger server_logger = get_logger('mcp_server') server_logger.info(f"=== MCP Server Logger Initialized === Log file: {LOG_FILE}")

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/pbulbule13/google-mcp-server'

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