Remote-MCP Server

by ssut
export enum LogLevel { DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3, } export interface LoggerOptions { level: LogLevel; prefix?: string; } export interface Logger { debug(message: string, meta?: Record<string, unknown>): void; info(message: string, meta?: Record<string, unknown>): void; warn(message: string, meta?: Record<string, unknown>): void; error(message: string, meta?: Record<string, unknown>): void; setLevel(level: LogLevel): void; } export class ConsoleLogger implements Logger { private level: LogLevel; private prefix: string; constructor(options: LoggerOptions) { this.level = options.level; this.prefix = options.prefix || 'MCPRouter'; } private formatMessage( level: string, message: string, meta?: Record<string, unknown>, ): string { const timestamp = new Date().toISOString(); const baseMessage = `[${timestamp}] [${this.prefix}] [${level}] ${message}`; return meta ? `${baseMessage} ${JSON.stringify(meta)}` : baseMessage; } debug(message: string, meta?: Record<string, unknown>): void { if (this.level <= LogLevel.DEBUG) { console.debug(this.formatMessage('DEBUG', message, meta)); } } info(message: string, meta?: Record<string, unknown>): void { if (this.level <= LogLevel.INFO) { console.info(this.formatMessage('INFO', message, meta)); } } warn(message: string, meta?: Record<string, unknown>): void { if (this.level <= LogLevel.WARN) { console.warn(this.formatMessage('WARN', message, meta)); } } error(message: string, meta?: Record<string, unknown>): void { if (this.level <= LogLevel.ERROR) { console.error(this.formatMessage('ERROR', message, meta)); } } setLevel(level: LogLevel): void { this.level = level; } }