/** * Logger utility for debug mode */ /* eslint-disable no-console */ export class Logger { private enabled: boolean; private prefix: string; constructor(enabled: boolean = false, prefix: string = 'WioEX') { this.enabled = enabled; this.prefix = prefix; } /** * Enable or disable logging */ public setEnabled(enabled: boolean): void { this.enabled = enabled; } /** * Get timestamp for log messages */ private getTimestamp(): string { return new Date().toISOString().substring(11, 23); // HH:mm:ss.SSS } /** * Format prefix with timestamp */ private formatPrefix(): string { return `[${this.prefix} ${this.getTimestamp()}]`; } /** * Log message (info level) */ public log(message: string, data?: unknown): void { if (this.enabled) { if (data !== undefined) { console.log(this.formatPrefix(), message, data); } else { console.log(this.formatPrefix(), message); } } } /** * Log warning message */ public warn(message: string, data?: unknown): void { if (this.enabled) { if (data !== undefined) { console.warn(this.formatPrefix(), message, data); } else { console.warn(this.formatPrefix(), message); } } } /** * Log error message */ public error(message: string, data?: unknown): void { if (this.enabled) { if (data !== undefined) { console.error(this.formatPrefix(), message, data); } else { console.error(this.formatPrefix(), message); } } } /** * Log info message (alias for log) */ public info(message: string, data?: unknown): void { this.log(message, data); } /** * Log debug message */ public debug(message: string, data?: unknown): void { this.log(message, data); } }