Skip to main content
Glama
logger.ts1.67 kB
export class Logger { private static instance: Logger; private logLevel: 'debug' | 'info' | 'warn' | 'error' = 'info'; private mcpMode: boolean = false; static getInstance(): Logger { if (!Logger.instance) { Logger.instance = new Logger(); } return Logger.instance; } setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): void { this.logLevel = level; } setMcpMode(enabled: boolean): void { this.mcpMode = enabled; } private shouldLog(level: string): boolean { const levels = ['debug', 'info', 'warn', 'error']; const currentLevel = levels.indexOf(this.logLevel); const messageLevel = levels.indexOf(level); return messageLevel >= currentLevel; } private formatMessage(level: string, message: string, meta?: any): string { const timestamp = new Date().toISOString(); const metaStr = meta ? ` ${JSON.stringify(meta)}` : ''; return `[${timestamp}] [${level.toUpperCase()}] ${message}${metaStr}`; } debug(message: string, meta?: any): void { if (this.shouldLog('debug') && !this.mcpMode) { console.debug(this.formatMessage('debug', message, meta)); } } info(message: string, meta?: any): void { if (this.shouldLog('info') && !this.mcpMode) { console.info(this.formatMessage('info', message, meta)); } } warn(message: string, meta?: any): void { if (this.shouldLog('warn') && !this.mcpMode) { console.warn(this.formatMessage('warn', message, meta)); } } error(message: string, meta?: any): void { if (this.shouldLog('error') && !this.mcpMode) { console.error(this.formatMessage('error', message, meta)); } } }

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/masamunet/npm-dev-mcp'

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