Javascript @sentry/节点集成,将bunyan日志调用包装为面包屑

Javascript @sentry/节点集成,将bunyan日志调用包装为面包屑,javascript,node.js,logging,sentry,bunyan,Javascript,Node.js,Logging,Sentry,Bunyan,Sentry默认集成了控制台.log,使其成为面包屑的一部分: 链接: 我们如何才能让它也为我们工作,比如: const koa = require('koa'); const app = new koa(); const bunyan = require('bunyan'); const log = bunyan.createLogger({ name: 'app', ..... other settings go here .... }); const Sentry = re

Sentry默认集成了
控制台.log
,使其成为面包屑的一部分:

链接:

我们如何才能让它也为我们工作,比如:

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

另外,我已经试过了,但没有成功,它只是推送条目,而不是把它们当作面包屑

Bunyan支持自定义流,这些流只是函数调用。看

下面是一个简单写入控制台的示例自定义流。使用这个示例来编写Sentry模块是很简单的,可能会调用
Sentry.addBreadcrumb({})
或类似的函数

请注意,我下面的示例中的变量
record
是一个JSON字符串,因此您可能希望对其进行解析,以从中获取日志级别、消息和其他数据,以便提交给Sentry

{
  level: 'debug',
  stream:
    (function () {
      return {
        write: function(record) {
          console.log('Hello: ' + record);
        }
      }
    })()
}