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

时间:2015-06-19 23:23:26

标签: javascript node.js logging winston

我正在使用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);。注释掉{{1}}并在expectedBehavior测试中进行注释表明,当日期附加到每个日志时,日志记录会按预期发生。

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

1 个答案:

答案 0 :(得分:1)

这被证实是bug不是由格式化程序引起的,而是因为我的格式化日志输出很短。有一个将被合并的修复程序。