如何让Winston-daily-rotate-file每周轮换一次

时间:2016-09-22 15:02:20

标签: logging winston

我使用winston-daily-rotate-file作为Node项目。如何使日志文件每周轮换一次?

1 个答案:

答案 0 :(得分:1)

根据winston-daily-rotate-file的描述 我们可以看到
的选项 datePattern:“表示要旋转的moment.js date format的字符串。此字符串中使用的元字符将指示文件旋转的频率。例如,如果datePattern只是'HH',最终将每天收集并附加到24个日志文件中。(默认值:'YYYY-MM-DD')“

因此,要回答您的问题,一种使日志文件每周轮换的简单方法是设置datePattern: 'YYYY-w',其中w是一年中的第几周:1 2 ... 5253。
您可以在moment.js date format

中找到有关datePattern的更多选项

简单用法如下所示。

  const winston = require('winston');
  const DailyRotateFile = require('winston-daily-rotate-file');

  var winston = require('winston');
  require('winston-daily-rotate-file');

  var transport = new winston.transports.DailyRotateFile({
    filename: 'application-%DATE%.log',
    datePattern: 'YYYY-w'
  });

  transport.on('rotate', function(oldFilename, newFilename) {
     logger.info({'message':'New file created!'});
  });

  var logger = winston.createLogger({
    level: 'info',
    transports: [
      transport
    ]
  });

  logger.info('Hello World!');

因此,日志文件将被命名为application-year-week.log

例如。从2020年7月6日到2020年7月12日的一周是2020年的第28周。这意味着将在本周创建文件application-2020-28.log,在下一周创建application-2020-29.log,依此类推。您可以计算出该文件的哪一周年份是从这个Week Number Calculator

开始的