Skip to main content
Glama
logger.ts2.51 kB
// Logging utility for Ultimate Elementor MCP export enum LogLevel { DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3, } export interface LogConfig { level: LogLevel; enableRequestLogging: boolean; enablePerformanceLogging: boolean; enableDebugMode: boolean; } class Logger { private config: LogConfig; constructor(config?: Partial<LogConfig>) { this.config = { level: LogLevel.INFO, enableRequestLogging: true, enablePerformanceLogging: true, enableDebugMode: process.env.DEBUG_MODE === 'true', ...config, }; } private shouldLog(level: LogLevel): boolean { return level >= this.config.level; } private formatMessage(level: string, message: string, meta?: any): string { const timestamp = new Date().toISOString(); const metaStr = meta ? ` | ${JSON.stringify(meta)}` : ''; return `[${timestamp}] [${level}] ${message}${metaStr}`; } debug(message: string, meta?: any): void { if (this.shouldLog(LogLevel.DEBUG) && this.config.enableDebugMode) { console.error(this.formatMessage('DEBUG', message, meta)); } } info(message: string, meta?: any): void { if (this.shouldLog(LogLevel.INFO)) { console.error(this.formatMessage('INFO', message, meta)); } } warn(message: string, meta?: any): void { if (this.shouldLog(LogLevel.WARN)) { console.error(this.formatMessage('WARN', message, meta)); } } error(message: string, error?: Error | any, meta?: any): void { if (this.shouldLog(LogLevel.ERROR)) { const errorInfo = error instanceof Error ? { name: error.name, message: error.message, stack: error.stack } : error; console.error(this.formatMessage('ERROR', message, { ...meta, error: errorInfo })); } } request(method: string, url: string, meta?: any): void { if (this.config.enableRequestLogging) { this.info(`${method} ${url}`, meta); } } performance(operation: string, duration: number, meta?: any): void { if (this.config.enablePerformanceLogging) { this.debug(`${operation} completed in ${duration}ms`, meta); } } setLevel(level: LogLevel): void { this.config.level = level; } setDebugMode(enabled: boolean): void { this.config.enableDebugMode = enabled; } } // Export singleton instance export const logger = new Logger(); // Export factory function for custom loggers export function createLogger(config?: Partial<LogConfig>): Logger { return new Logger(config); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mbrown1837/Ultimate-Elementor-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server