Когда я использую консольный транспорт, я знаю, что могу добавить слушателя следующим образом:
logger.on ('logging', (transport, level, msg, meta) => использовать зарегистрированные данные ....
Но как мне записать в память и послушать?
Я в основном ищу решение для прослушивания журналов без их записи в консоли / файле / отправке через HTTP.
Ваше здоровье.
Для пользователей 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, не так ли?
Самый полезный комментарий
@ lonix1 @indexzero должно работать что-то вроде этого: