【问题标题】:How to delete files from winston log after certain days limit?如何在特定天数限制后从 winston 日志中删除文件?
【发布时间】:2016-11-11 09:51:00
【问题描述】:

我正在使用 winston 将文件记录到按预期工作的服务器中,现在我想设置天数限制,假设 3 天后我想删除 3 天前记录的文件,是否可以使用 winston 实现旋转?

main.js

 winston.add(winston.transports.File, {
        filename: './Logs/server.log',
        maxsize:'15000',
        timestamp:false
    });

【问题讨论】:

标签: node.js winston


【解决方案1】:

您可以为此使用Winston daily rotate

简短回答:是的,您可以通过在 transport 选项中添加 maxFiles:3d 来做到这一点。

  • 如果不设置maxFiles,则不会删除任何日志文件。

  • 如果您设置maxFiles:3d,它将删除最近3天创建的所有日志文件。

  • 如果设置maxFiles:3,超过3个以上时会删除日志文件。

注意:您可以使用zippedArchive: true在删除前存档文件,如果不设置,日志文件将被删除而不进行任何备份。直到现在,我还没有办法自动删除 zip 文件。

示例设置:

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

  var transport = new (winston.transports.DailyRotateFile)({
    filename: 'application-%DATE%.log',
    datePattern: 'YYYY-MM-DD-HH',
    zippedArchive: true,
    maxSize: '20m',
    maxFiles: '14d'
  });

  transport.on('rotate', function(oldFilename, newFilename) {
    // do something fun
  });

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

  logger.info('Hello World!');```


【讨论】:

  • 只是为了澄清maxFiles:3d 将删除过去 3 天内生成的文件,而不是早于 3d 的文件?如果是,有没有办法删除超过特定日期的文件?
【解决方案2】:

我花了几个小时试图了解日志轮换的工作原理。至少版本 3.10.0 的 winston-daily-rotate-file 正在使用 file-stream-rotator 进行文件轮换。我发现以下选项可行:

    const options = (level: string) => ({
      name: `${level}-log`,
      filename: `${APP_NAME}.${level}.%DATE%.log`,
      dirname: CONFIG.logDir,
      datePattern: 'YYYY-MM-DD',
      maxFiles: '1d',
      auditFile: `${CONFIG.logDir}/${APP_NAME}.${level}-audit.json`,
      level,
    })

    new winston.transports.DailyRotateFile(options('error'))

这使得 Winston 根据应用程序和日志记录级别创建 audit.json 文件。如果你不指定 auditFile 选项,你最终会得到生成的审计文件名,它由选项的哈希值组成,每当你改变选项时,它都会改变。如果您更改选项,您的审核文件名会更改,并且 Winston 无法在选项更改之前删除文件。

在我看来,使用审计文件并不是一个好办法。最好在没有任何额外文件的情况下从日志文件名中解析时间戳。例如,您不能将日志轮换添加到现有应用程序并让 Winston 删除在配置 Winston 日志轮换之前创建的日志文件。

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 2011-07-30
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2020-07-31
    • 2016-12-15
    相关资源
    最近更新 更多