UNPKG

@graisol/gpt-image-mcp

Version:

A Model Context Protocol (MCP) server for OpenAI GPT-Image-1 image generation and editing

121 lines 4.01 kB
"use strict"; /** * Logging utility for the GPT-Image-1 MCP Server */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = exports.Logger = exports.LogLevel = void 0; const promises_1 = __importDefault(require("fs/promises")); var LogLevel; (function (LogLevel) { LogLevel[LogLevel["ERROR"] = 0] = "ERROR"; LogLevel[LogLevel["WARN"] = 1] = "WARN"; LogLevel[LogLevel["INFO"] = 2] = "INFO"; LogLevel[LogLevel["DEBUG"] = 3] = "DEBUG"; })(LogLevel || (exports.LogLevel = LogLevel = {})); class Logger { logLevel; logFile; enableConsole; constructor(options = {}) { this.logLevel = options.logLevel ?? LogLevel.INFO; this.logFile = options.logFile; this.enableConsole = options.enableConsole ?? true; } async error(message, context, error) { await this.log(LogLevel.ERROR, message, context, error); } async warn(message, context) { await this.log(LogLevel.WARN, message, context); } async info(message, context) { await this.log(LogLevel.INFO, message, context); } async debug(message, context) { await this.log(LogLevel.DEBUG, message, context); } async log(level, message, context, error) { if (level > this.logLevel) { return; } const logEntry = { timestamp: new Date().toISOString(), level, message, context, error, }; if (this.enableConsole) { this.logToConsole(logEntry); } if (this.logFile) { await this.logToFile(logEntry); } } logToConsole(entry) { const levelName = LogLevel[entry.level]; const timestamp = entry.timestamp; const message = entry.message; let logMessage = `[${timestamp}] ${levelName}: ${message}`; if (entry.context) { logMessage += ` | Context: ${JSON.stringify(entry.context)}`; } if (entry.error) { logMessage += ` | Error: ${entry.error.message}`; if (entry.error.stack) { logMessage += `\nStack: ${entry.error.stack}`; } } switch (entry.level) { case LogLevel.ERROR: console.error(logMessage); break; case LogLevel.WARN: console.warn(logMessage); break; case LogLevel.INFO: console.info(logMessage); break; case LogLevel.DEBUG: console.debug(logMessage); break; } } async logToFile(entry) { if (!this.logFile) return; try { const logData = JSON.stringify(entry) + '\n'; await promises_1.default.appendFile(this.logFile, logData); } catch (error) { console.error('Failed to write to log file:', error); } } async rotateLogs() { if (!this.logFile) return; try { const stats = await promises_1.default.stat(this.logFile); const maxSize = 10 * 1024 * 1024; // 10MB if (stats.size > maxSize) { const rotatedFile = `${this.logFile}.${Date.now()}`; await promises_1.default.rename(this.logFile, rotatedFile); await this.info('Log file rotated', { rotatedFile }); } } catch (error) { console.error('Failed to rotate logs:', error); } } } exports.Logger = Logger; // Global logger instance exports.logger = new Logger({ logLevel: process.env.LOG_LEVEL ? parseInt(process.env.LOG_LEVEL) : LogLevel.INFO, logFile: process.env.LOG_FILE, enableConsole: process.env.LOG_CONSOLE !== 'false', }); //# sourceMappingURL=logger.js.map