Skip to main content
Glama
logger.ts1.76 kB
import { logConfig } from '@/config'; export enum LogLevel { DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3, } class Logger { private level: LogLevel; constructor() { this.level = this.getLogLevel(); } private getLogLevel(): LogLevel { switch (logConfig.level.toLowerCase()) { case 'debug': return LogLevel.DEBUG; case 'info': return LogLevel.INFO; case 'warn': return LogLevel.WARN; case 'error': return LogLevel.ERROR; default: return LogLevel.INFO; } } private formatMessage(level: string, message: string, ...args: any[]): string { const timestamp = new Date().toISOString(); const formattedArgs = args.length > 0 ? ` ${args .map((arg) => (typeof arg === 'object' ? JSON.stringify(arg) : String(arg))) .join(' ')}` : ''; return `[${timestamp}] [${level}] ${message}${formattedArgs}`; } debug(message: string, ...args: any[]): void { if (this.level <= LogLevel.DEBUG && logConfig.enableConsole) { console.debug(this.formatMessage('DEBUG', message, ...args)); } } info(message: string, ...args: any[]): void { if (this.level <= LogLevel.INFO && logConfig.enableConsole) { console.info(this.formatMessage('INFO', message, ...args)); } } warn(message: string, ...args: any[]): void { if (this.level <= LogLevel.WARN && logConfig.enableConsole) { console.warn(this.formatMessage('WARN', message, ...args)); } } error(message: string, ...args: any[]): void { if (this.level <= LogLevel.ERROR && logConfig.enableConsole) { console.error(this.formatMessage('ERROR', message, ...args)); } } } export const logger = new Logger();

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/chendaleiQ/mcp-iot'

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