Sentry-javascript: Ist es jetzt möglich? @sentry/node-Integration zum Verpacken von Bunyan-Protokollaufrufen als Breadcrumbs SO-Link: https://stackoverflow.com/questions/53310580/sentry-node-integration-to-wrap-bunyan-log-calls-as-breadcrumbs

Erstellt am 15. Nov. 2018  ·  3Kommentare  ·  Quelle: getsentry/sentry-javascript

Wie kann ich eine @sentry/node-Integration vornehmen, um Bunyan-Protokollaufrufe als Breadcrumbs zu verpacken?

Paket

@sentry/node 4.3.0

Beschreibung

Sentry hat standardmäßig eine Integration für console.log , um es zu einem Teil von Breadcrumbs zu machen:

Link: Importname: Sentry.Integrations.Console

Wie können wir es auch für den Bunyan-Logger zum

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 Ich habe bunyan-sentry-stream bereits ausprobiert, aber kein Erfolg mit @sentry/node , es schiebt nur Einträge, anstatt sie als Breadcrumbs zu behandeln.

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

Question

Hilfreichster Kommentar

https://docs.sentry.io/enriching-error-data/breadcrumbs/?platform=browser + wie jemand bereits auf der SO geantwortet hat:

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

Alle 3 Kommentare

https://docs.sentry.io/enriching-error-data/breadcrumbs/?platform=browser + wie jemand bereits auf der SO geantwortet hat:

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

Ursprüngliche Frage wurde beantwortet. Fühlen Sie sich frei, wieder zu öffnen, wenn Sie noch weitere Fragen haben.

Wenn Sie Typskript verwenden, können Compilerprobleme auftreten, wenn Sie im obigen Beispiel keinen WriteableStream bereitstellen. Daher können Sie den Writeable-Konstruktor wie unten beschrieben verwenden.

Zusätzlich:

  • Die von Bunyan ausgegebene Stufe ist eine Zahl, kein Senty-Schweregrad, daher müssen Sie den Wert mit level: Sentry.Severity.fromString(nameFromLevel[chunk.level]) umwandeln
  • Ich möchte den vorhandenen Bunyan-Stream nicht überschreiben, also verwende die addStream-Funktion, anstatt BunyanOptions zu übergeben
// 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();
    },
  }),
});
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

THPubs picture THPubs  ·  3Kommentare

mogelbrod picture mogelbrod  ·  3Kommentare

jaylinski picture jaylinski  ·  3Kommentare

franciscovelez picture franciscovelez  ·  3Kommentare

grigored picture grigored  ·  3Kommentare