Skip to main content
Glama
logging.ts2.46 kB
/** * Logging utility module for MCP Workspace Server * Provides structured logging with configurable log levels */ import { LogLevel } from '../config.js'; /** * Numeric log level values for comparison */ enum LogLevelValue { DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3, } /** * Maps string log levels to numeric values */ const LOG_LEVEL_MAP: Record<LogLevel, LogLevelValue> = { debug: LogLevelValue.DEBUG, info: LogLevelValue.INFO, warn: LogLevelValue.WARN, error: LogLevelValue.ERROR, }; /** * Logger class for structured logging with configurable levels */ export class Logger { private level: LogLevelValue; /** * Creates a new Logger instance * @param level - The minimum log level to output */ constructor(level: LogLevel) { this.level = LOG_LEVEL_MAP[level]; } /** * Logs a debug message * @param message - The log message * @param meta - Optional metadata object */ debug(message: string, meta?: object): void { if (this.level <= LogLevelValue.DEBUG) { this.log('DEBUG', message, meta); } } /** * Logs an info message * @param message - The log message * @param meta - Optional metadata object */ info(message: string, meta?: object): void { if (this.level <= LogLevelValue.INFO) { this.log('INFO', message, meta); } } /** * Logs a warning message * @param message - The log message * @param meta - Optional metadata object */ warn(message: string, meta?: object): void { if (this.level <= LogLevelValue.WARN) { this.log('WARN', message, meta); } } /** * Logs an error message * @param message - The log message * @param meta - Optional metadata object */ error(message: string, meta?: object): void { if (this.level <= LogLevelValue.ERROR) { this.log('ERROR', message, meta); } } /** * Internal method to format and output log messages * @param level - The log level string * @param message - The log message * @param meta - Optional metadata object */ private log(level: string, message: string, meta?: object): void { const timestamp = new Date().toISOString(); const logEntry: Record<string, unknown> = { timestamp, level, message, }; if (meta) { logEntry.meta = meta; } // Output to stderr to avoid interfering with MCP protocol on stdout console.error(JSON.stringify(logEntry)); } }

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/ShayYeffet/mcp_server'

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