Использование node.js Bunyan Logging с Intellij
Я использую ведение журнала bunyan для подсистемы node.js и обычно использую intellij IDEA. Я хотел бы использовать симпатичный принтер Bunyan, чтобы я мог использовать преимущества журналов buynan/json в IntelliJ.
Я не могу найти способ сделать это, но чувствую, что это возможно. Кто-нибудь разобрался, как это сделать?
ОБНОВИТЬ:
Ответ @cyue ниже работает как чемпион. Когда я не нашел что-то сразу, я закончил тем, что создал что-то вроде этого в классе журналирования, который я использую, чтобы обернуть эту функциональность и использовать ее для тестовых серверов:
var bunyan = require('bunyan');
var bunyanFormat = require('bunyan-format');
var standardOut = bunyanFormat({outputMode: 'long', levelInString: true});
var errorOut = bunyanFormat({outputMode: 'bunyan', levelInString: true});
var bunyanLogger = bunyan.createLogger({
name: 'tot',
streams: [
{
stream: process.stdout ,
level: 'trace'
},
{
stream: process.stderr ,
level: 'warn'
}
],
serializers: {
req: bunyan.stdSerializers.req,
res: bunyan.stdSerializers.res,
err: bunyan.stdSerializers.err,
error: bunyan.stdSerializers.err
}
});
eventLogger.on('log', function (log) {
if (resolveLevel(log.level) >= minimumLogLevel) {
bunyanLogger[log.level].apply(bunyanLogger, log.arguments);
}
});
Выше не следует запускать в производственном коде, но подумал, что это может быть полезно для некоторых...
2 ответа
Мне удалось это сделать в WebStorm, написать сценарий оболочки (мой с именем node2bunyan) с помощью этого:
#!/usr/bin/env bash
node $@ 2>&1 | bunyan --color
exit ${PIPESTATUS[0]}
И добавьте его в качестве интерпретатора узла для конфигурации запуска:
PS. Я застрял, чтобы получить то же самое для PyCharm и достиг вашего вопроса при поиске SO, мой вопрос для PyCharm
Вы можете использовать эту библиотеку в своем проекте JS:
https://github.com/mrrama/node-bunyan-prettystream
Вы настраиваете это так:
var bunyan = require('bunyan');
var PrettyStream = require('bunyan-prettystream');
var prettyStream = new PrettyStream();
prettyStream.pipe(process.stdout);
// Note this is an object with key 'stream' inside array.
// The object is the stream definition as far as Bunyan is concerned.
var streams = [{
stream: prettyStream
}];
bunyan.createLogger({
streams: streams,
serializers: bunyan.stdSerializers
});