Bagaimana saya bisa membuat integrasi @sentry/node untuk membungkus panggilan log bunyan sebagai remah roti?
@sentry/node
4.3.0
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
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: Sentry.Severity.fromString(nameFromLevel[chunk.level])
// 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();
},
}),
});
Komentar yang paling membantu
https://docs.sentry.io/enriching-error-data/breadcrumbs/?platform=browser + karena seseorang sudah menjawab di SO: