Sentry-javascript: Apakah mungkin sekarang? Integrasi @sentry/node untuk membungkus panggilan log bunyan sebagai tautan SO tautan: https://stackoverflow.com/questions/53310580/sentry-node-integration-to-wrap-bunyan-log-calls-as-breadcrumbs

Dibuat pada 15 Nov 2018  ·  3Komentar  ·  Sumber: getsentry/sentry-javascript

Bagaimana saya bisa membuat integrasi @sentry/node untuk membungkus panggilan log bunyan sebagai remah roti?

Paket

@sentry/node 4.3.0

Deskripsi

Sentry secara default memiliki integrasi untuk console.log untuk menjadikannya bagian dari remah roti:

Tautan: Nama impor: Sentry.Integrations.Console

Bagaimana kita bisa membuatnya bekerja untuk bunyan logger juga, seperti:

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

PS Saya sudah mencoba bunyan-sentry-stream tetapi tidak berhasil dengan @sentry/node , itu hanya mendorong entri alih-alih memperlakukannya sebagai remah roti.

JADI tautan: https://stackoverflow.com/questions/53310580/sentry-node-integration-to-wrap-bunyan-log-calls-as-breadcrumbs

Question

Komentar yang paling membantu

https://docs.sentry.io/enriching-error-data/breadcrumbs/?platform=browser + karena seseorang sudah menjawab di SO:

var log = bunyan.createLogger({
  name: 'myapp',
  streams: [{
  level: 'debug',
  stream: {
    write: function(record) {
      Sentry.addBreadcrumb({
        message: record.msg,
        level: record.level
      });
    }
  }]
});

Semua 3 komentar

https://docs.sentry.io/enriching-error-data/breadcrumbs/?platform=browser + karena seseorang sudah menjawab di SO:

var log = bunyan.createLogger({
  name: 'myapp',
  streams: [{
  level: 'debug',
  stream: {
    write: function(record) {
      Sentry.addBreadcrumb({
        message: record.msg,
        level: record.level
      });
    }
  }]
});

Pertanyaan asli dijawab. Jangan ragu untuk membuka kembali jika Anda masih memiliki pertanyaan lain.

Jika Anda menggunakan TypeScript, Anda mungkin mendapatkan beberapa masalah kompiler karena tidak menyediakan WriteableStream dengan contoh di atas, oleh karena itu Anda dapat menggunakan konstruktor Writeable seperti di bawah ini.

Selain itu:

  • level yang keluar dari Bunyan adalah angka, bukan tingkat keparahan Senty, oleh karena itu Anda harus mengonversi nilainya menggunakan level: Sentry.Severity.fromString(nameFromLevel[chunk.level])
  • Saya tidak ingin mengganti aliran bunyan yang ada jadi gunakan fungsi addStream alih-alih meneruskan BunyanOptions
// if you want some stronger typing around the bunyan log entry
interface BunyanChunk {
  pid?: number;
  level: number;
  msg: string
  // ...   hostname?: string;
  [custom: string]: unknown;
}

const appLogger = Bunyan.createLogger();

appLogger.addStream({
  level: 'debug',
  // use the Writable constructor and pass a write function
  stream: new Writable({
    write(c: string, encoding, next) {
      const chunk: BunyanChunk = JSON.parse(c);
      Sentry.addBreadcrumb({
        message: chunk.msg,
        // convert from a Bunyan level to a Sentry Severity
        level: Sentry.Severity.fromString(Bunyan.nameFromLevel[chunk.level]),
      });
      next();
    },
  }),
});
Apakah halaman ini membantu?
0 / 5 - 0 peringkat