diff --git a/app.js b/app.js index a24fcc6..407a954 100644 --- a/app.js +++ b/app.js @@ -3,6 +3,8 @@ var express = require('express') var path = require('path') var logger = require('morgan') var cors = require('cors') +var Sentry = require('@sentry/node') +var Tracing = require('@sentry/tracing') const connectRouter = require('./routes/v1/connect') const connectionsRouter = require('./routes/v1/connections') @@ -16,17 +18,33 @@ const publicRouter = require('./routes/v1/oracle') const feedbackRouter = require('./routes/v1/feedback') var boolParser = require('express-query-boolean') -const { json } = require('express') -const { - getConnectionArray, - getConnections, - getAllConnections, -} = require('./src/controllers/connectionController') + const { clientErrorHandler } = require('./src/middlewear/aurahandler') var app = express() -app.use(express.json({limit: '10mb'})); -app.use(express.urlencoded({limit: '10mb'})); +Sentry.init({ + dsn: process.env.SENTRY_DSN, + integrations: [ + // enable HTTP calls tracing + new Sentry.Integrations.Http({ tracing: true }), + // enable Express.js middleware tracing + new Tracing.Integrations.Express({ app }), + ], + + // Set tracesSampleRate to 1.0 to capture 100% + // of transactions for performance monitoring. + // We recommend adjusting this value in production + tracesSampleRate: 1.0, +}) + +// RequestHandler creates a separate execution context using domains, so that every +// transaction/span/breadcrumb is attached to its own Hub instance +app.use(Sentry.Handlers.requestHandler()) +// TracingHandler creates a trace for every incoming request +app.use(Sentry.Handlers.tracingHandler()) + +app.use(express.json({ limit: '10mb' })) +app.use(express.urlencoded({ limit: '10mb' })) app.use(logger('dev')) app.use(express.json()) app.use(boolParser()) @@ -46,4 +64,7 @@ app.use('/v1/nickname', nicknameRouter) app.use('/v1/public', publicRouter) app.use('/v1/feedback', feedbackRouter) +// The error handler must be before any other error middleware and after all controllers +app.use(Sentry.Handlers.errorHandler()) + module.exports = app diff --git a/package.json b/package.json index a5c444e..7ba5d35 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ "heroku-postbuild": "PGSSLMODE=require node-pg-migrate up --no-reject-unauthorized" }, "dependencies": { + "@sentry/node": "^7.19.0", + "@sentry/tracing": "^7.19.0", "apisauce": "^2.1.5", "arangojs": "^7.6.1", "axios": "^0.21.1",