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