@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
JavaScript
/**
* 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();