Интеграция с часовым / узлом, чтобы обернуть буньянские журналы как хлебные крошки - PullRequest
0 голосов
/ 15 ноября 2018

Sentry по умолчанию имеет интеграцию для console.log, чтобы сделать его частью панировочных сухарей:

Ссылка: Имя импорта: Sentry.Integrations.Console

Как мы можем заставить его работать на bunyan logger , например:

const koa = require('koa');
const app = new koa();
const bunyan = require('bunyan');
const log = bunyan.createLogger({
    name: 'app',
    ..... other settings go here ....
});
const Sentry = require('@sentry/node');
Sentry.init({
    dsn: MY_DSN_HERE,
    integrations: integrations => {
        // should anything be handled here & how?
        return [...integrations];
    },
    release: 'xxxx-xx-xx'
});

app.on('error', (err) => {
    Sentry.captureException(err);
});

// I am trying all to be part of sentry breadcrumbs 
// but only console.log('foo'); is working
console.log('foo');
log.info('bar');
log.warn('baz');
log.debug('any');
log.error('many');  

throw new Error('help!');

P.S. Я уже пробовал bunyan-sentry-stream , но без @ sentry / node ничего не получается, он просто выдвигает записи, а не обрабатывает их как панировочные сухари.

1 Ответ

0 голосов
/ 15 ноября 2018

Bunyan поддерживает пользовательские потоки, и эти потоки являются просто вызовами функций. Смотри https://github.com/trentm/node-bunyan#streams

Ниже приведен пример пользовательского потока, который просто пишет в консоль. Было бы просто использовать этот пример для записи в модуль Sentry, вероятно вызывая Sentry.addBreadcrumb({}) или аналогичную функцию.

Обратите внимание, что переменная record в моем примере ниже представляет собой строку JSON, поэтому вы, вероятно, захотите проанализировать ее, чтобы получить из нее уровень журнала, сообщения и другие данные для отправки в Sentry.

{
  level: 'debug',
  stream:
    (function () {
      return {
        write: function(record) {
          console.log('Hello: ' + record);
        }
      }
    })()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...