UNPKG

theater-client

Version:

TypeScript client library for Theater actor system TCP protocol

62 lines (49 loc) 1.71 kB
/** * Simple logging utility for Theater client */ export type LogLevel = 'debug' | 'info' | 'warn' | 'error'; export interface Logger { debug(message: string, ...args: any[]): void; info(message: string, ...args: any[]): void; warn(message: string, ...args: any[]): void; error(message: string, ...args: any[]): void; } class ConsoleLogger implements Logger { constructor(private component: string) {} private shouldLog(level: LogLevel): boolean { const levels: LogLevel[] = ['debug', 'info', 'warn', 'error']; return levels.indexOf(level) >= levels.indexOf(globalLogLevel); } private formatMessage(level: LogLevel, message: string): string { const timestamp = new Date().toISOString(); return `[${timestamp}] [${level.toUpperCase()}] [${this.component}] ${message}`; } debug(message: string, ...args: any[]): void { if (this.shouldLog('debug')) { console.debug(this.formatMessage('debug', message), ...args); } } info(message: string, ...args: any[]): void { if (this.shouldLog('info')) { console.info(this.formatMessage('info', message), ...args); } } warn(message: string, ...args: any[]): void { if (this.shouldLog('warn')) { console.warn(this.formatMessage('warn', message), ...args); } } error(message: string, ...args: any[]): void { if (this.shouldLog('error')) { console.error(this.formatMessage('error', message), ...args); } } } // Global logger configuration let globalLogLevel: LogLevel = 'info'; export function setLogLevel(level: LogLevel): void { globalLogLevel = level; } export function createLogger(component: string): Logger { return new ConsoleLogger(component); }