UNPKG

@trishchuk/ai-think-gate-mcp

Version:

Model Context Protocol (MCP) server that provides AI-powered thinking and code architecture tools

90 lines (89 loc) 2.28 kB
/** * Logging service for ThinkGate-MCP */ class LoggingService { /** * Initialize logging service */ constructor() { this.minLevel = 'log'; this.isEnabled = true; this.prefix = '[ThinkGate]'; // Check log level from environment const envLogLevel = process.env.LOG_LEVEL?.toLowerCase(); if (envLogLevel && ['debug', 'info', 'log', 'warn', 'error'].includes(envLogLevel)) { this.minLevel = envLogLevel; } // Check if logging is disabled this.isEnabled = process.env.LOG_DISABLED !== 'true'; } /** * Set minimum log level */ setMinLevel(level) { this.minLevel = level; } /** * Enable/disable logging */ setEnabled(enabled) { this.isEnabled = enabled; } /** * Set prefix for logs */ setPrefix(prefix) { this.prefix = prefix; } /** * Log debug messages */ debug(message, ...args) { this.logWithLevel('debug', message, ...args); } /** * Log info messages */ info(message, ...args) { this.logWithLevel('info', message, ...args); } /** * Log regular messages */ log(message, ...args) { this.logWithLevel('log', message, ...args); } /** * Log warnings */ warn(message, ...args) { this.logWithLevel('warn', message, ...args); } /** * Log errors */ error(message, ...args) { this.logWithLevel('error', message, ...args); } /** * Log with specified level */ logWithLevel(level, message, ...args) { if (!this.isEnabled) return; const levelPriority = { 'debug': 0, 'info': 1, 'log': 2, 'warn': 3, 'error': 4 }; if (levelPriority[level] >= levelPriority[this.minLevel]) { const timestamp = new Date().toISOString(); const formattedMsg = `${timestamp} ${this.prefix} [${level.toUpperCase()}] ${message}`; console.error(formattedMsg, ...args); } } } // Export a single instance of the logging service for use throughout the project export const logService = new LoggingService();