WinstonJS - Add current Date into log file name for FileTransport

20 views Asked by At

I am using winstonjs 3.8.2 for generating log files, I am currently using File transport for generating log files.

Using the code below, I am getting log files with name like 'myLogs_2024-01-22.log.2024-01-22'.

const myFormat = printf(({ level, message, timestamp }) => {
   return `[${timestamp}] [${level}]: ${message}`;
});

const logLevels = {
    error: 0,
    warn: 1,
    info: 2,
    http: 3,
    verbose: 4,
    debug: 5,
    silly: 6
};

let mydate = new Date();

let newFilename = "myLogs_" + mydate.getFullYear() + "-" + mydate.getMonth() + "-" + mydate.getDate() + ".log";

const fileRotateTransport = new transports.DailyRotateFile({
   filename: newFilename,
   datePattern: 'YYYY-MM-DD',
   maxFiles: '7d',
});

return createLogger({
   levels: logLevels,
   level: process.env.LOG_LEVEL ||'info',
   format: combine(
      format.colorize({ all: true }),
      format.cli(),
      timestamp({ format: 'YYYY-MM-DD hh:mm:ss.SSS A' }),
      format.align(),
      printf((info) => `[${info.timestamp}] ${info.level}: ${info.message}`),
      myFormat
   ),
   transports: [fileRotateTransport],
   exitOnError: false
});

I want to get file name with the current date when the file is created: 'myLogs_2024-01-22.log'. I considered 'winston-daily-rotate-file', but I dont know from where current date is getting appended to file name after .log

0

There are 0 answers