Winston: Könnte jemand ein Beispiel für die Verwendung des Speichertransports und Möglichkeiten zum Anhören nennen?

Erstellt am 16. Feb. 2016  ·  4Kommentare  ·  Quelle: winstonjs/winston

Wenn ich den Konsolentransport verwende, weiß ich, dass ich einen Listener wie diesen hinzufügen kann:
logger.on('logging', (transport, level, msg, meta) => die protokollierten Daten verwenden....

Aber wie kann ich mich in den Speicher einloggen und anhören?
Ich suche im Grunde nach einer Lösung, um Protokolle abzuhören, ohne dass sie in die Konsole / Datei geschrieben / über HTTP gesendet werden.

Beifall.

2.x only

Hilfreichster Kommentar

@lonix1 @indexzero sollte so etwas funktionieren:

import { Writable } from 'stream';

let output = ''
const stream = new Writable()
stream._write = (chunk, encoding, next) => {
     output = output += chunk.toString()
     next()
}

const streamTransport = new winston.transports.Stream({ stream })
const logger = winston.createLogger({ transports: [streamTransport]})
logger.info('test message')
const logEvents = output.trim().split('\n')
assert(logEvents[0].includes('test message'))

Alle 4 Kommentare

Für Benutzer von winston@3 : winston.transports.Memory wurde entfernt – verwenden Sie stattdessen winston.transports.Stream mit jeder gepufferten Stream-Implementierung.

Historisch gesehen wurde winston < 3 winston.transports.Memory für Unit-Tests verwendet. Es wurde in winston@3 da Streams in der Lage sind, mit Gegendruck umzugehen. Bitte erwägen Sie ein Upgrade und danke für die Verwendung von winston !

Hallo, die ursprüngliche Frage ist immer noch gültig - gibt es ein Beispiel?

Wir möchten dies auch tun, um während des Tests eine Protokollierung im Speicher durchführen zu können.

@lonix1 @indexzero sollte so etwas funktionieren:

import { Writable } from 'stream';

let output = ''
const stream = new Writable()
stream._write = (chunk, encoding, next) => {
     output = output += chunk.toString()
     next()
}

const streamTransport = new winston.transports.Stream({ stream })
const logger = winston.createLogger({ transports: [streamTransport]})
logger.info('test message')
const logEvents = output.trim().split('\n')
assert(logEvents[0].includes('test message'))

Ich nehme nicht an, dass dies mit IE11 funktionieren könnte, oder?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen