我们可以在winston中设置无限制的maxFiles吗?

时间:2017-03-10 15:17:38

标签: javascript node.js logging winston

我们已经使用nodejs实现了逻辑,如果目录中的现有文件超过30天删除文件,所以我们不想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;
            }
        })
    ]
});

1 个答案:

答案 0 :(得分:0)

对于动态命名,您可以查看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需要填充&#34; 0&#34;如果它是一个数字。

Github拉取请求article

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