const { createLogger, format, transports } = require("winston"); const path = require("path"); require("winston-daily-rotate-file"); const logDir = path.join(__dirname, "../writable/logs"); const dailyRotateFileTransport = new transports.DailyRotateFile({ filename: path.join(logDir, "app-%DATE%.log"), datePattern: "YYYY-MM-DD", zippedArchive: false, maxSize: "20m", maxFiles: "30d", // keep logs for 30 days }); const logger = createLogger({ level: "info", format: format.combine( format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), format.printf( (info) => `${info.timestamp} [${info.level.toUpperCase()}]: ${info.message}` ) ), transports: [ dailyRotateFileTransport, new transports.Console({ format: format.combine(format.colorize(), format.simple()), }), ], exitOnError: false, }); module.exports = logger;