Использование 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
});
Другие вопросы по тегам