Lorsque j'utilise le transport de console, je sais que je peux ajouter un écouteur comme celui-ci :
logger.on('logging', (transport, level, msg, meta) => utiliser les données enregistrées....
Mais comment puis-je me connecter à la mémoire et l'écouter ?
Je recherche essentiellement une solution pour écouter les journaux sans les avoir écrits dans la console/le fichier/envoyé via HTTP.
Acclamations.
Pour les utilisateurs de winston@3
: winston.transports.Memory
a été supprimé – utilisez winston.transports.Stream
place avec n'importe quelle implémentation de flux mis en mémoire tampon.
Historiquement, d'un point de vue winston < 3
, winston.transports.Memory
était utilisé à des fins de tests unitaires. Il a été supprimé dans winston@3
car les flux sont capables de gérer la contre-pression. Veuillez envisager de mettre à niveau et merci d'utiliser winston
!
Salut, la question d'origine est toujours valable - y a-t-il un exemple?
Nous voulons également faire cela, pour pouvoir effectuer une journalisation dans la mémoire pendant les tests.
@lonix1 @indexzero quelque chose comme ceci devrait fonctionner :
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'))
Je suppose que cela ne pourrait pas fonctionner avec IE11, n'est-ce pas ?
Commentaire le plus utile
@lonix1 @indexzero quelque chose comme ceci devrait fonctionner :