import { Logger } from '../../interfaces/Logger'; export class ConsoleLogger implements Logger { private formatMessage(level: string, message: string, context?: unknown): string { const timestamp = new Date().toISOString(); const contextStr = context ? ` | ${JSON.stringify(context)}` : ''; return `[${timestamp}] ${level.toUpperCase()}: ${message}${contextStr}`; } debug(message: string, context?: unknown): void { // Always log debug in development and test environments if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') { console.debug(this.formatMessage('debug', message, context)); } } info(message: string, context?: unknown): void { // Always log info - we need transparency in all environments console.info(this.formatMessage('info', message, context)); } warn(message: string, context?: unknown): void { console.warn(this.formatMessage('warn', message, context)); } error(message: string, error?: Error, context?: unknown): void { const errorStr = error ? ` | Error: ${error.message}` : ''; console.error(this.formatMessage('error', message, context) + errorStr); // In development, also show enhanced error info if (process.env.NODE_ENV === 'development' && error) { console.groupCollapsed(`%c[ERROR DETAIL] ${message}`, 'color: #ff4444; font-weight: bold;'); console.log('Error Object:', error); console.log('Stack Trace:', error.stack); console.log('Context:', context); console.groupEnd(); } } }