Die Winston Dokumentation hat einen Abschnitt über streaming logs die sagt:Wie funktionieren die Protokollströme von Winston?
Streaming ermöglicht es Ihnen, Ihre Protokolle zurück von dem gewählten Transport zu streamen.
und gibt das folgende Codebeispiel:
//
// Start at the end.
//
winston.stream({ start: -1 }).on('log', function(log) {
console.log(log);
});
dieser Meine Lesart ist, dass jede Nachricht neues Protokoll wäre auf der Konsole hinzugefügt. Die Konfiguration {start: -1}
weist den Stream an, am Ende der Datei zu beginnen, sodass nur neue Protokolleinträge ausgegeben werden. Ich erwarte, dass das folgende Node-Skript dazu führen würde, dass jede vorhandene Zeile der test.log
-Datei an die Konsole ausgegeben wird und anschließend alle 500ms ein neues Objekt ausgegeben wird.
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);
ich erwarten würde so etwas wie die folgende Ausgabe zu sehen:
{"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"}
tatsächlich ist, was geschieht, dass die Protokollierung mit dem File Transport (die Datei erhält einen all 500ms neuen Protokolleintrag) wie erwartet funktioniert aber es gibt keine Ausgabe auf der Konsole. Die Zeile wird nie aufgerufen.
Habe ich etwas offensichtlich übersehen oder den Zweck von Winstons Protokollströmen missverstanden?
vielleicht verwenden sie das konventionelle "Daten" -Ereignis? – bevacqua
Ich hatte das gleiche Problem, und ich vermute, dass es nicht mit Datei- oder Konsolentransporten funktioniert, da dies die beiden sind, die ich ausprobiert habe, und der Rückruf wird nie aufgerufen. @ Nico, Dieser Code ist direkt aus der README von Winston und im Code: heraus.emittieren ('log', log); Das Problem ist, dass nichts, was ich versucht habe, scheint dies zu arbeiten :( –
Danke für die Bestätigung meiner Verdächtigungen @RobinDuckett. Ich würde dies als ein Fehler ablegen, aber Winston sieht mehr oder weniger tot: https: // github. com/flatiron/winston/issues/294 Müsste abzweigen – drzax