【问题标题】:Can we set unlimited maxFiles in winston?我们可以在 winston 中设置无限的 maxFiles 吗?
【发布时间】:2017-03-10 15:17:38
【问题描述】:

如果目录中的现有文件超过 30 天,我们已经使用 nodejs 实现了逻辑删除该文件,所以我们不想 winston 设置 maxFiles,因为我们想根据时间保留文件。

我与 winston 相关的第二个问题是,当我们旋转当前文件时,它的附加 server1.log 一旦达到文件大小,是否可以附加日期,例如 server-03-10-2017.log

ctrl.js

   var logger = new(winston.Logger)({
      level: null,
      transports: [
//          new(winston.transports.Console)({formatter}),
          new(winston.transports.File)({
            filename: './logs/dit/server.log',
            maxsize: 1024 * 1024 * 20, // 15MB
            timestamp: true,
            maxFiles: 10,
            json: false,
            formatter: function (options) {
             return options.message;
            }
        })
    ]
});

【问题讨论】:

    标签: javascript node.js logging winston


    【解决方案1】:

    动态命名可以看一下rotationFormat,但是需要旋转文件...

    winston.add(winston.transports.File, { 
      filename: './logs/dit/server.log',
      maxsize: 1024 * 1024 * 20, // 15MB
      rotationFormat: function() {
        return getFormattedDate();
        function getFormattedDate() {
          var temp = new Date();
          return dateStr = padStr(temp.getFullYear()) +
          padStr(1 + temp.getMonth()) +
          padStr(temp.getDate()) +
          padStr(temp.getHours()) +
          padStr(temp.getMinutes()) +
          padStr(temp.getSeconds());
        }
        function padStr(i) {
          return (i < 10) ? "0" + i : "" + i;
        }
      }
    });
    

    输出文件应类似于 ./logs/dit/server2010310173556.log

    padStr 如果是单个数字,则需要用“0”填充。

    Github 拉取请求 article

    编辑:您应该设置 maxsize 并指定返回格式化日期的 rotationFormat 函数(需要相应地修改 lib/winston/transports/file.js,请参阅文章)。它将附加在文件名的末尾。我不确定是否需要maxFiles

    【讨论】:

    • 我无法打开 url article 未授权,我知道我们必须在 winston 中设置 maxFiles,这是必需的属性?
    • 我们如何调用rotationFormat方法?
    猜你喜欢
    • 2015-05-28
    • 2010-11-12
    • 1970-01-01
    • 2021-11-07
    相关资源
    最近更新 更多