Winstonのドキュメントには、ストリーミング ログに関するセクションがあり、次のように書かれています。
ストリーミングを使用すると、選択したトランスポートからログをストリーミングして戻すことができます。
次のコード例を示します。
//
// Start at the end.
//
winston.stream({ start: -1 }).on('log', function(log) {
console.log(log);
});
これを読むと、追加された新しいログメッセージはそれぞれコンソールに出力されるということです。config は、ファイルの{start: -1}
末尾からストリームを開始するように指示するため、新しいログ エントリのみが出力されます。次の Node スクリプトを実行すると、test.log
ファイルの既存の各行がコンソールに出力され、その後 500 ミリ秒ごとに新しいオブジェクトが出力されると予想されます。
var winston = require('winston');
winston.add(winston.transports.File, {
filename: 'test.log'
});
winston.remove(winston.transports.Console);
winston.stream().on('log', function(log) {
console.log(log);
});
setInterval(function(){
winston.log('info', 'help');
}, 500);
次のような出力が表示されることを期待しています。
{"level":"info","message":"help","timestamp":"2013-12-10T05:55:15.806Z"}
{"level":"info","message":"help","timestamp":"2013-12-10T05:55:16.307Z"}
{"level":"info","message":"help","timestamp":"2013-12-10T05:55:16.809Z"}
{"level":"info","message":"help","timestamp":"2013-12-10T05:55:17.309Z"}
{"level":"info","message":"help","timestamp":"2013-12-10T05:56:48.316Z"}
実際に発生するのは、ロギングがファイル トランスポートで期待どおりに機能することです (ファイルは 500 ミリ秒ごとに新しいログ エントリを取得します) が、コンソールへの出力はありません。console.log(log)
回線が呼び出されることはありません。
Winston のログ ストリームの目的を明らかに見落としていたり、誤解していたりしませんか?