nightingale-sentry-output
Version:
Nightingale sentry output
42 lines (34 loc) • 937 B
JavaScript
import { Client as RavenClient } from 'raven';
import levels from 'nightingale-levels';
const mapToSentryLevel = {
[]: 'debug',
[]: 'debug',
[]: 'info',
[]: 'warning',
[]: 'error',
[]: 'fatal',
[]: 'fatal',
};
export default function sentryOutput(ravenUrl) {
const ravenClient = new RavenClient(ravenUrl);
return function write(_, { level, metadata, extra }) {
let error = metadata && metadata.error;
if (!error) {
return;
}
const extraData = { ...metadata, extra };
delete extraData.error;
if (error.originalError) {
// error-processor
extraData.parsedStack = error.stackTrace.toArray();
error = error.originalError;
}
ravenClient.captureError(
error,
{
level: mapToSentryLevel[level] || 'error',
extra: extraData,
},
);
};
}