Winston: ¿Alguien podría compartir un ejemplo del uso del transporte de memoria y formas de escucharlo?

Creado en 16 feb. 2016  ·  4Comentarios  ·  Fuente: winstonjs/winston

Cuando uso el transporte de consola, sé que puedo agregar un oyente como este:
logger.on ('logging', (transporte, nivel, msg, meta) => usar los datos registrados ....

Pero, ¿cómo puedo registrarme en la memoria y escucharlo?
Básicamente, estoy buscando una solución para escuchar los registros sin tenerlos escritos en la consola / archivo / enviados a través de HTTP.

Salud.

2.x only

Comentario más útil

@ lonix1 @indexzero algo como esto debería funcionar:

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

Todos 4 comentarios

Para los usuarios de winston@3 : winston.transports.Memory ha sido eliminado; use winston.transports.Stream lugar con cualquier implementación de transmisión almacenada en búfer.

Históricamente, desde una perspectiva de winston < 3 , winston.transports.Memory se usaba con fines de prueba unitaria. Se eliminó en winston@3 ya que las transmisiones son capaces de manejar la contrapresión. ¡Considere actualizar y gracias por usar winston !

Hola, la pregunta original sigue siendo válida, ¿hay algún ejemplo?

También queremos hacer esto, para poder realizar el registro en la memoria durante la prueba.

@ lonix1 @indexzero algo como esto debería funcionar:

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

Supongo que esto no podría funcionar con IE11, ¿verdad?

¿Fue útil esta página
0 / 5 - 0 calificaciones