send-in-blue/sentry.js
const { ExtraErrorData, RewriteFrames } = require("@sentry/integrations");
const {
captureException: sentryCaptureException,
captureMessage: sentryCaptureMessage,
Integrations: NodeIntegrations,
init,
Handlers,
autoDiscoverNodePerformanceMonitoringIntegrations,
} = require("@sentry/node");
const { SENTRY_URL, SENTRY_TRACING_SAMPLE_RATE } = require("./config");
function initSentry(app) {
init({
enabled: Boolean(SENTRY_URL),
dsn: SENTRY_URL,
environment: "email",
normalizeDepth: 16,
integrations: [
new ExtraErrorData({ depth: 16 }),
new RewriteFrames({ root: process.cwd() }),
new NodeIntegrations.Http({ tracing: true }),
new NodeIntegrations.Modules(),
...autoDiscoverNodePerformanceMonitoringIntegrations(),
],
tracesSampleRate: Number(SENTRY_TRACING_SAMPLE_RATE),
ignoreErrors: [
/^No error$/,
/__show__deepen/,
/_avast_submit/,
/Access is denied/,
/anonymous function: captureException/,
/Blocked a frame with origin/,
/can't redefine non-configurable property "userAgent"/,
/change_ua/,
/console is not defined/,
/cordova/,
/DataCloneError/,
/Error: AccessDeny/,
/event is not defined/,
/feedConf/,
/ibFindAllVideos/,
/myGloFrameList/,
/SecurityError/,
/MyIPhoneApp/,
/snapchat.com/,
/vid_mate_check is not defined/,
/win\.document\.body/,
/window\._sharedData\.entry_data/,
/window\.regainData/,
/ztePageScrollModule/,
],
});
// The request handler must be the first middleware on the app
app.use(Handlers.requestHandler());
// TracingHandler creates a trace for every incoming request
app.use(Handlers.tracingHandler());
return () => {
// The error handler must be before any other error middleware and after all controllers
app.use(Handlers.errorHandler());
};
}
function capture(err, contexte) {
console.log("capture", err);
if (!err) {
sentryCaptureMessage("Error not defined");
return;
}
if (err instanceof Error) {
sentryCaptureException(err, contexte);
} else if (err.error instanceof Error) {
sentryCaptureException(err.error, contexte);
} else if (err.message) {
sentryCaptureMessage(err.message, contexte);
} else {
sentryCaptureMessage("Error not defined well", {
extra: { error: err, contexte: contexte },
});
}
}
function captureMessage(mess, contexte) {
console.log("captureMessage", mess);
if (!mess) {
sentryCaptureMessage("Message not defined");
return;
}
if (mess) {
sentryCaptureMessage(mess, contexte);
}
}
module.exports = {
initSentry,
capture,
captureMessage,
};