繁体   English   中英

使用Node.js的Winston模块正确记录到文件

[英]Correct logging to file using Node.js's Winston module

我正在使用Winston将日志记录到控制台和文件中。 如果我指定了格式化程序,并且记录的消息与上一个相同,则文件日志仅写入一次。 在其他情况下(未指定格式化程序或未写入控制台),日志记录将按预期工作。

这是简化的代码:

var winston = require('winston');

function formatter(args) {
    return "some formatting: " + args.message;
}

var weirdLogger = new (winston.Logger)({
    transports: [
        new (winston.transports.Console)({
            json: false,
            formatter: formatter
        }),
        new (winston.transports.File)({
            filename: "weirdLogger.csv",
            json: false,
            formatter: formatter
        })
    ]
});

var workingLogger = new (winston.Logger)({
    transports: [
        new (winston.transports.Console)({
            json: false
        }),
        new (winston.transports.File)({
            filename: "workingLogger.csv",
            json: false
        })
    ]
});

var weirdLogTest = function () {
    weirdLogger.info("test1");
    workingLogger.info("test2");
};

var expectedBehaviorLogTest = function () {
    weirdLogger.info("test1: " + new Date().getTime());
    workingLogger.info("test2: " + new Date().getTime());
};

setInterval(weirdLogTest, 5000);
//setInterval(expectedBehaviorLogTest, 5000);

如所写,此代码显示test1和test2每五秒钟记录一次到控制台,而workingLogger.csv被更新,但是weirdLogger.csv不是。 注释掉setInterval(weirdLogTest, 5000); 并在ExpectedBehavior测试中添加注释会显示,将日期附加到每个日志后,日志记录将按预期进行。

我一直无法在文档中找到任何有关忽略重复消息或其他可以解释此问题的信息。 关于我做错了什么的任何想法? 这可能是一个错误,但我不想排除用户错误。

确认这是一个不是由格式化程序引起的错误 ,而是因为我的格式化日志输出太短了。 有一个将被合并的修复程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM