39 lines
1.5 KiB
TypeScript
39 lines
1.5 KiB
TypeScript
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();
|
|
}
|
|
}
|
|
} |