/** * ZCLAW Logger * * Unified logging utility. In production builds, debug and trace logs are suppressed. * Warn and error logs are always emitted. */ const isDev = import.meta.env.DEV; type LogLevel = 'debug' | 'info' | 'warn' | 'error'; function shouldLog(level: LogLevel): boolean { if (level === 'warn' || level === 'error') return true; return isDev; } export const logger = { debug(message: string, ...args: unknown[]): void { if (shouldLog('debug')) { console.debug(message, ...args); } }, info(message: string, ...args: unknown[]): void { if (shouldLog('info')) { console.info(message, ...args); } }, warn(message: string, ...args: unknown[]): void { console.warn(message, ...args); }, error(message: string, ...args: unknown[]): void { console.error(message, ...args); }, }; export function createLogger(target: string) { const prefix = `[${target}]`; return { debug: (message: string, ...args: unknown[]) => logger.debug(`${prefix} ${message}`, ...args), info: (message: string, ...args: unknown[]) => logger.info(`${prefix} ${message}`, ...args), warn: (message: string, ...args: unknown[]) => logger.warn(`${prefix} ${message}`, ...args), error: (message: string, ...args: unknown[]) => logger.error(`${prefix} ${message}`, ...args), }; }