2015-06-19 62 views
0

我正在使用Winston來記錄到控制檯和文件。如果我指定格式化程序並且記錄的消息與前一個相同,則文件日誌只寫入一次。在其他情況下(沒有指定格式化程序或寫入控制檯),日誌記錄按預期工作。使用Node.js的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); 

書面,該代碼顯示登錄到控制檯每隔五秒鐘workingLogger.csv更新TEST1和TEST2,但weirdLogger.csv不是。註釋setInterval(weirdLogTest, 5000);並且在expectedBehavior測試中發表評論表明,當將日期附加到每個日誌時,日誌會按預期發生。

我一直無法找到關於忽略重複的消息或其他事情,可以解釋這一點的文檔中的任何東西。關於我在做什麼不正確的想法?這可能是一個錯誤,但我不想排除用戶錯誤。

回答

0

確認這是一個bug,這不是格式化程序引起的,而是因爲我格式化的日誌輸出非常短。有一個將被合併的修復程序。