/** * Logger Utility * Winston-based logging for ERP Mecanicas Diesel * Propagated from erp-core */ import winston from 'winston'; const { combine, timestamp, printf, colorize, errors } = winston.format; const logLevel = process.env.LOG_LEVEL || 'info'; const nodeEnv = process.env.NODE_ENV || 'development'; const logFormat = printf(({ level, message, timestamp, ...metadata }) => { let msg = `${timestamp} [${level}]: ${message}`; if (Object.keys(metadata).length > 0) { msg += ` ${JSON.stringify(metadata)}`; } return msg; }); export const logger = winston.createLogger({ level: logLevel, format: combine( errors({ stack: true }), timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), logFormat ), transports: [ new winston.transports.Console({ format: combine( colorize(), timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), logFormat ), }), ], }); // Add file transport in production if (nodeEnv === 'production') { logger.add( new winston.transports.File({ filename: 'logs/error.log', level: 'error' }) ); logger.add( new winston.transports.File({ filename: 'logs/combined.log' }) ); }