I want to capture any 4XX and 5XX errors in sentry. I found out that sentry by default does not log 4XX errors into sentry, so I've added the shouldHandleError error handler as well, but the 5XX/4XX responses are still not going to sentry.
import express, { Express } from 'express';
import * as Sentry from '@sentry/node';
import config from '../../../config/default';
import mountRoutes from './routers';
initSentry();
const app = express();
setupSentryHeaders(app);
app.use(express.json());
app.get('/',(req: any , res: any) => {
res.sendStatus(502)
})
setSentryErrorHandler(app);
app.listen(8000, async () => {
console.log(`service running...`);
});
function initSentry() {
Sentry.init({
dsn: config.sentry_dsn,
environment: "development",
attachStacktrace: true
});
}
function setSentryErrorHandler(app: Express) {
app.use(Sentry.Handlers.errorHandler({
shouldHandleError(error) {
const statusCode = error.statusCode
if(statusCode > 400 ){
return true;
}
return false;
},
}));
}
function setupSentryHeaders(app: Express) {
app.use(Sentry.Handlers.requestHandler() as express.RequestHandler);
}