UNPKG

@genxis/whmrockstar

Version:

🎸 GenXis WHMRockStar - AI-powered multi-server WHM/cPanel management via Model Context Protocol (MCP). Enhanced with proper MCP stdio protocol support and multi-server management.

85 lines (70 loc) • 2.04 kB
const fs = require('fs'); const path = require('path'); class Logger { constructor() { this.logLevel = process.env.LOG_LEVEL || 'info'; this.logLevels = { error: 0, warn: 1, info: 2, debug: 3 }; // Create logs directory if it doesn't exist const logsDir = path.join(process.env.HOME || process.env.USERPROFILE, '.genxis-whmrockstar', 'logs'); if (!fs.existsSync(logsDir)) { fs.mkdirSync(logsDir, { recursive: true }); } this.logFile = path.join(logsDir, 'whm-operations.log'); } shouldLog(level) { return this.logLevels[level] <= this.logLevels[this.logLevel]; } formatMessage(level, message) { const timestamp = new Date().toISOString(); return `[${timestamp}] [${level.toUpperCase()}] ${message}`; } writeToFile(formattedMessage) { try { fs.appendFileSync(this.logFile, formattedMessage + '\n'); } catch (error) { // Fallback to console if file write fails console.error('Failed to write to log file:', error.message); } } log(level, message) { if (!this.shouldLog(level)) return; const formattedMessage = this.formatMessage(level, message); // Always write to file this.writeToFile(formattedMessage); // Console output based on level switch (level) { case 'error': console.error(formattedMessage); break; case 'warn': console.warn(formattedMessage); break; case 'info': console.log(formattedMessage); break; case 'debug': if (process.env.NODE_ENV === 'development') { console.debug(formattedMessage); } break; } } error(message) { this.log('error', message); } warn(message) { this.log('warn', message); } info(message) { this.log('info', message); } debug(message) { this.log('debug', message); } } module.exports = new Logger();