Winston: Alguém poderia compartilhar um exemplo de como usar o transporte de memória e maneiras de ouvi-lo?

Criado em 16 fev. 2016  ·  4Comentários  ·  Fonte: winstonjs/winston

Quando eu uso o transporte do console, sei que posso adicionar um ouvinte como este:
logger.on ('logging', (transport, level, msg, meta) => use os dados registrados ....

Mas como posso registrar na memória e ouvi-la?
Basicamente, estou procurando uma solução para ouvir os logs sem que eles sejam escritos no console / arquivo / enviados por HTTP.

Felicidades.

2.x only

Comentários muito úteis

@ lonix1 @indexzero algo assim deve 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 comentários

Para winston@3 usuários: winston.transports.Memory foi removido - use winston.transports.Stream vez de qualquer implementação de fluxo em buffer.

Historicamente, de uma perspectiva winston < 3 winston.transports.Memory foi usado para fins de teste de unidade. Ele foi removido em winston@3 pois os fluxos são capazes de lidar com a contrapressão. Considere atualizar e obrigado por usar winston !

Olá, a pergunta original ainda é válida - há um exemplo?

Também queremos fazer isso, para poder realizar o registro na memória durante o teste.

@ lonix1 @indexzero algo assim deve 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'))

Suponho que isso não funcione com o IE11, não é?

Esta página foi útil?
0 / 5 - 0 avaliações