Use Sentry error reporting

This commit is contained in:
Michael Jackson 2018-08-25 15:13:55 -07:00
parent 6d57d95b7f
commit a3d97a45c6
2 changed files with 28 additions and 19 deletions

View File

@ -1,6 +1,7 @@
const http = require("http"); const http = require("http");
const express = require("express"); const express = require("express");
const morgan = require("morgan"); const morgan = require("morgan");
const raven = require("raven");
const staticAssets = require("./middleware/staticAssets"); const staticAssets = require("./middleware/staticAssets");
const createRouter = require("./createRouter"); const createRouter = require("./createRouter");
@ -10,22 +11,35 @@ morgan.token("fwd", req => {
return fwd ? fwd.replace(/\s/g, "") : "-"; return fwd ? fwd.replace(/\s/g, "") : "-";
}); });
function errorHandler(err, req, res, next) { if (process.env.SENTRY_DSN) {
console.error(err.stack); raven
.config(process.env.SENTRY_DSN, {
res release: process.env.HEROKU_RELEASE_VERSION,
.status(500) autoBreadcrumbs: true
.type("text") })
.send("Internal Server Error"); .install();
next(err);
} }
// function errorHandler(err, req, res, next) {
// console.error(err.stack);
// res
// .status(500)
// .type("text")
// .send("Internal Server Error");
// next(err);
// }
function createServer(publicDir, statsFile) { function createServer(publicDir, statsFile) {
const app = express(); const app = express();
app.disable("x-powered-by"); app.disable("x-powered-by");
if (process.env.SENTRY_DSN) {
app.use(raven.requestHandler());
}
if (process.env.NODE_ENV !== "test") { if (process.env.NODE_ENV !== "test") {
app.use( app.use(
morgan( morgan(
@ -36,7 +50,7 @@ function createServer(publicDir, statsFile) {
); );
} }
app.use(errorHandler); // app.use(errorHandler);
if (publicDir) { if (publicDir) {
app.use(express.static(publicDir, { maxAge: "365d" })); app.use(express.static(publicDir, { maxAge: "365d" }));
@ -48,6 +62,10 @@ function createServer(publicDir, statsFile) {
app.use(createRouter()); app.use(createRouter());
if (process.env.SENTRY_DSN) {
app.use(raven.errorHandler());
}
const server = http.createServer(app); const server = http.createServer(app);
// Heroku dynos automatically timeout after 30s. Set our // Heroku dynos automatically timeout after 30s. Set our

View File

@ -1,6 +1,5 @@
const path = require("path"); const path = require("path");
const throng = require("throng"); const throng = require("throng");
const raven = require("raven");
const createServer = require("./modules/createServer"); const createServer = require("./modules/createServer");
const createDevServer = require("./modules/createDevServer"); const createDevServer = require("./modules/createDevServer");
@ -8,14 +7,6 @@ const serverConfig = require("./modules/serverConfig");
require("./modules/clientRuntime"); require("./modules/clientRuntime");
if (process.env.SENTRY_DSN) {
raven
.config(process.env.SENTRY_DSN, {
release: process.env.HEROKU_RELEASE_VERSION
})
.install();
}
function startServer(id) { function startServer(id) {
const server = const server =
process.env.NODE_ENV === "production" process.env.NODE_ENV === "production"