Skip to main content
Glama
logger.ts1.78 kB
export type LogLevel = 'error' | 'warn' | 'info' | 'debug'; export interface Logger { error(message: string, ...args: any[]): void; warn(message: string, ...args: any[]): void; info(message: string, ...args: any[]): void; debug(message: string, ...args: any[]): void; } export class SimpleLogger implements Logger { private readonly name: string; private readonly level: LogLevel; constructor(name: string, level?: LogLevel) { this.name = name; this.level = level || (process.env.LOG_LEVEL as LogLevel) || 'info'; } private shouldLog(level: LogLevel): boolean { const levels: LogLevel[] = ['error', 'warn', 'info', 'debug']; const currentIndex = levels.indexOf(this.level); const requestedIndex = levels.indexOf(level); return requestedIndex <= currentIndex; } private formatMessage(level: LogLevel, message: string): string { const timestamp = new Date().toISOString(); return `[${timestamp}] [${level.toUpperCase()}] [${this.name}] ${message}`; } error(message: string, ...args: any[]): void { if (this.shouldLog('error')) { console.error(this.formatMessage('error', message), ...args); } } warn(message: string, ...args: any[]): void { if (this.shouldLog('warn')) { console.warn(this.formatMessage('warn', message), ...args); } } info(message: string, ...args: any[]): void { if (this.shouldLog('info')) { console.log(this.formatMessage('info', message), ...args); } } debug(message: string, ...args: any[]): void { if (this.shouldLog('debug')) { console.log(this.formatMessage('debug', message), ...args); } } } export function createLogger(name: string, level?: LogLevel): Logger { return new SimpleLogger(name, level); }

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/davstr1/peekabooMCP'

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