Winston: Quelqu'un pourrait-il partager un exemple d'utilisation du transport de mémoire et des moyens de l'écouter ?

Créé le 16 févr. 2016  ·  4Commentaires  ·  Source: winstonjs/winston

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.

2.x only

Commentaire le plus utile

@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'))

Tous les 4 commentaires

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 ?

Cette page vous a été utile?
0 / 5 - 0 notes