Winston: Может ли кто-нибудь поделиться примером использования транспорта памяти и способов его прослушивания?

Созданный на 16 февр. 2016  ·  4Комментарии  ·  Источник: winstonjs/winston

Когда я использую консольный транспорт, я знаю, что могу добавить слушателя следующим образом:
logger.on ('logging', (transport, level, msg, meta) => использовать зарегистрированные данные ....

Но как мне записать в память и послушать?
Я в основном ищу решение для прослушивания журналов без их записи в консоли / файле / отправке через HTTP.

Ваше здоровье.

2.x only

Самый полезный комментарий

@ lonix1 @indexzero должно работать что-то вроде этого:

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

Все 4 Комментарий

Для пользователей winston@3 : winston.transports.Memory было удалено - используйте вместо этого winston.transports.Stream с любой реализацией буферизованного потока.

Исторически с точки зрения winston < 3 winston.transports.Memory использовалось для целей модульного тестирования. Он был удален в winston@3 поскольку потоки способны справляться с обратным давлением. Пожалуйста, подумайте об обновлении и спасибо за использование winston !

Привет, исходный вопрос все еще актуален - есть ли пример?

Мы также хотим сделать это, чтобы иметь возможность выполнять запись в память во время тестирования.

@ lonix1 @indexzero должно работать что-то вроде этого:

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

Я не думаю, что это могло бы работать с IE11, не так ли?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги