UNPKG

@gabrielmaialva33/mcp-filesystem

Version:
85 lines 2.31 kB
import fs from 'node:fs/promises'; import path from 'node:path'; export class Logger { static instance; logFile; logLevel = 'info'; levelPriority = { debug: 0, info: 1, warn: 2, error: 3, }; constructor() { } static getInstance() { if (!Logger.instance) { Logger.instance = new Logger(); } return Logger.instance; } setLogFile(filePath) { this.logFile = filePath; } setLogLevel(level) { this.logLevel = level; } shouldLog(level) { return this.levelPriority[level] >= this.levelPriority[this.logLevel]; } async writeLog(entry) { if (!this.shouldLog(entry.level)) { return; } const logMessage = JSON.stringify(entry); if (entry.level === 'error' || entry.level === 'warn') { console.error(logMessage); } else { console.error(`[${entry.level.toUpperCase()}] ${entry.message}`); } if (this.logFile) { try { const logDir = path.dirname(this.logFile); await fs.mkdir(logDir, { recursive: true }).catch(() => { }); await fs.appendFile(this.logFile, logMessage + '\n'); } catch (error) { console.error(`Failed to write to log file: ${error}`); } } } async debug(message, metadata) { await this.writeLog({ timestamp: new Date().toISOString(), level: 'debug', message, metadata, }); } async info(message, metadata) { await this.writeLog({ timestamp: new Date().toISOString(), level: 'info', message, metadata, }); } async warn(message, metadata) { await this.writeLog({ timestamp: new Date().toISOString(), level: 'warn', message, metadata, }); } async error(message, metadata) { await this.writeLog({ timestamp: new Date().toISOString(), level: 'error', message, metadata, }); } } export const logger = Logger.getInstance(); //# sourceMappingURL=index.js.map