diff --git a/package.json b/package.json index 5a6448647..845cf4c2e 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,8 @@ "express-http-proxy": "0.6.0", "lodash.defaults": "3.1.2", "mustache": "2.1.3", - "newrelic": "1.22.1" + "newrelic": "1.22.1", + "raven": "0.8.1" }, "devDependencies": { "autoprefixer-loader": "2.1.0", diff --git a/server/index.js b/server/index.js index 230de3564..cae07fcb0 100644 --- a/server/index.js +++ b/server/index.js @@ -33,6 +33,21 @@ for (var routeId in routes) { app.get(route.pattern, handler(route)); } +if (typeof process.env.SENTRY_DSN === 'string' ) { + var raven = require('raven'); + app.get( '/sentrythrow', function mainHandler (req,res) { throw new Error('Sentry Test'); } ); + + // These handlers must be applied _AFTER_ other rotes have been applied + app.use( raven.middleware.express.requestHandler( process.env.SENTRY_DSN ) ); + app.use( raven.middleware.express.errorHandler( process.env.SENTRY_DSN ) ); + app.use( function errorHandler(err, req, res, next) { + res.append('X-Sentry-ID:'+res.sentry); + res.status(500); + next(err); + } ); + +} + // Bind proxies in development if (process.env.NODE_ENV !== 'production') { var proxyHost = process.env.PROXY_HOST || 'https://staging.scratch.mit.edu';