UNPKG

@kya-os/mcp-i

Version:

COMING SOON:Production-ready MCP Identity with automatic registration, key rotation, and optimized performance

100 lines 2.96 kB
/** * Logger abstraction for MCP-I * Allows consumers to control logging behavior */ /** * No-op logger (default for production) */ export class SilentLogger { debug() { } info() { } warn() { } error() { } } /** * Console logger (for development) */ export class ConsoleLogger { prefix; level; constructor(prefix = '[MCP-I]', level = 'info') { this.prefix = prefix; this.level = level; } shouldLog(level) { const levels = ['debug', 'info', 'warn', 'error', 'silent']; const currentIndex = levels.indexOf(this.level); const messageIndex = levels.indexOf(level); return messageIndex >= currentIndex; } debug(message, ...args) { if (this.shouldLog('debug')) { console.log(`${this.prefix} [DEBUG]`, message, ...args); } } info(message, ...args) { if (this.shouldLog('info')) { console.log(`${this.prefix} [INFO]`, message, ...args); } } warn(message, ...args) { if (this.shouldLog('warn')) { console.warn(`${this.prefix} [WARN]`, message, ...args); } } error(message, ...args) { if (this.shouldLog('error')) { // Enhanced error logging if (args.length > 0 && args[0] instanceof Error) { const error = args[0]; console.error(`${this.prefix} [ERROR]`, message); console.error(`${this.prefix} [ERROR] Message:`, error.message); // Show stack trace in debug mode if (this.level === 'debug' && error.stack) { console.error(`${this.prefix} [ERROR] Stack:`, error.stack); } // Log additional args if any if (args.length > 1) { console.error(`${this.prefix} [ERROR] Additional info:`, ...args.slice(1)); } } else { console.error(`${this.prefix} [ERROR]`, message, ...args); } } } } /** * Logger factory */ export class LoggerFactory { static instance = new SilentLogger(); static setLogger(logger) { LoggerFactory.instance = logger; } static getLogger() { return LoggerFactory.instance; } static createConsoleLogger(level) { return new ConsoleLogger('[MCP-I]', level); } static createSilentLogger() { return new SilentLogger(); } static reset() { LoggerFactory.instance = new SilentLogger(); } } // Export convenience function export function getLogger(logLevel) { // If logLevel is specified, create appropriate logger if (logLevel === 'silent') { return new SilentLogger(); } else if (logLevel) { return new ConsoleLogger('[MCP-I]', logLevel); } // Otherwise return the factory instance return LoggerFactory.getLogger(); } //# sourceMappingURL=logger.js.map