const winston = require('winston'); const path = require('path'); const fs = require('fs'); // Ensure logs directory exists const logDir = path.join(__dirname, '..', 'logs'); if (!fs.existsSync(logDir)) { fs.mkdirSync(logDir, { recursive: true }); } const logLevel = process.env.LOG_LEVEL || 'info'; const logFile = process.env.LOG_FILE || path.join(logDir, 'app.log'); const logger = winston.createLogger({ level: logLevel, format: winston.format.combine( winston.format.timestamp(), winston.format.errors({ stack: true }), winston.format.json() ), defaultMeta: { service: 'stl-storage' }, transports: [ new winston.transports.File({ filename: path.join(logDir, 'error.log'), level: 'error', maxsize: 5242880, // 5MB maxFiles: 5 }), new winston.transports.File({ filename: logFile, maxsize: 5242880, // 5MB maxFiles: 5 }) ] }); // Add console transport for development if (process.env.NODE_ENV !== 'production') { logger.add(new winston.transports.Console({ format: winston.format.combine( winston.format.colorize(), winston.format.simple() ) })); } module.exports = logger;