const winston = require('winston'); const path = require('path'); const fs = require('fs'); // Create logs directory if it doesn't exist const logDir = 'logs'; if (!fs.existsSync(logDir)) { fs.mkdirSync(logDir); } // Define log format const logFormat = winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.printf(({ timestamp, level, message }) => { return `${timestamp} [${level.toUpperCase()}]: ${message}`; }) ); // Create logger const logger = winston.createLogger({ level: process.env.NODE_ENV === 'production' ? 'info' : 'debug', format: logFormat, transports: [ // Console transport new winston.transports.Console({ format: winston.format.combine( winston.format.colorize(), logFormat ) }), // File transport for errors new winston.transports.File({ filename: path.join(logDir, 'error.log'), level: 'error' }), // File transport for all logs new winston.transports.File({ filename: path.join(logDir, 'combined.log') }) ] }); module.exports = logger;