add more details to errorHandler email

This commit is contained in:
Tyler Renelle 2013-12-27 12:12:15 -07:00
parent c5ca9cf41b
commit 2332b15a55
2 changed files with 44 additions and 37 deletions

View file

@ -3,26 +3,46 @@
var conf = require("nconf");
var path = require("path");
var utils = require("./utils")
conf.argv()
.env()
//.file('defaults', path.join(path.resolve(__dirname, '../config.json.example')))
.file('user', path.join(path.resolve(__dirname, '../config.json')));
module.exports.setup = function(){
conf.argv()
.env()
//.file('defaults', path.join(path.resolve(__dirname, '../config.json.example')))
.file('user', path.join(path.resolve(__dirname, '../config.json')));
/*
var agent;
if (process.env.NODE_ENV === 'development') {
// Follow these instructions for profiling / debugging leaks
// * https://developers.google.com/chrome-developer-tools/docs/heap-profiling
// * https://developers.google.com/chrome-developer-tools/docs/memory-analysis-101
agent = require('webkit-devtools-agent');
console.log("To debug memory leaks:" +
"\n\t(1) Run `kill -SIGUSR2 " + process.pid + "`" +
"\n\t(2) open http://c4milo.github.com/node-webkit-agent/21.0.1180.57/inspector.html?host=localhost:1337&page=0");
}
*/
// var agent;
// if (process.env.NODE_ENV === 'development') {
// // Follow these instructions for profiling / debugging leaks
// // * https://developers.google.com/chrome-developer-tools/docs/heap-profiling
// // * https://developers.google.com/chrome-developer-tools/docs/memory-analysis-101
// agent = require('webkit-devtools-agent');
// console.log("To debug memory leaks:" +
// "\n\t(1) Run `kill -SIGUSR2 " + process.pid + "`" +
// "\n\t(2) open http://c4milo.github.com/node-webkit-agent/21.0.1180.57/inspector.html?host=localhost:1337&page=0");
// }
if (conf.get('NODE_ENV') === "development") {
Error.stackTraceLimit = Infinity;
}
};
if (conf.get('NODE_ENV') === "development") {
Error.stackTraceLimit = Infinity;
}
module.exports.errorHandler = function(err, req, res, next) {
// when we hit an error, send it to admin as an email. If no ADMIN_EMAIL is present, just send it to yourself (SMTP_USER)
var stack = (err.stack ? err.stack : err.message ? err.message : err) +
"\n ----------------------------\n" +
"\nauth: " + req.headers['x-api-user'] + ' | ' + req.headers['x-api-key'] +
"\noriginalUrl: " + req.originalUrl +
"\nbody: " + JSON.stringify(req.body);
utils.sendEmail({
from: "HabitRPG <" + conf.get('SMTP_USER') + ">",
to: conf.get('ADMIN_EMAIL') || conf.get('SMTP_USER'),
subject: "HabitRPG Error",
text: stack
});
console.error(stack);
var shortMessage = (err.message.length < 200) ? err.message :
err.message.substring(0,100) + err.message.substring(err.message.length-100,err.message.length);
res.json(500,{err:shortMessage}); //res.end(err.message);
}

View file

@ -5,6 +5,7 @@ var http = require("http");
var path = require("path");
var app = express();
var nconf = require('nconf');
var config = require('./config');
var utils = require('./utils');
var middleware = require('./middleware');
var domainMiddleware = require('domain-middleware');
@ -12,8 +13,7 @@ var server;
var TWO_WEEKS = 1000 * 60 * 60 * 24 * 14;
// ------------ Setup configurations ------------
require('./config');
config.setup();
// ------------ MongoDB Configuration ------------
mongoose = require('mongoose');
@ -109,27 +109,14 @@ app.use('/api/v2', require('./routes/apiv2').middleware);
app.use('/api/v1', require('./routes/apiv1').middleware);
app.use('/export', require('./routes/dataexport').middleware);
app.use(function(err, req, res, next) {
// when we hit an error, send it to admin as an email. If no ADMIN_EMAIL is present, just send it to yourself (SMTP_USER)
var stack = "["+req.session.userId+"] " + (err.stack ? err.stack : err.message ? err.message : err);
utils.sendEmail({
from: "HabitRPG <" + nconf.get('SMTP_USER') + ">",
to: nconf.get('ADMIN_EMAIL') || nconf.get('SMTP_USER'),
subject: "HabitRPG Error",
text: stack
});
console.error(stack);
var shortMessage = (err.message.length < 200) ? err.message :
err.message.substring(0,100) + err.message.substring(err.message.length-100,err.message.length);
res.json(500,{err:shortMessage}); //res.end(err.message);
});
app.use(config.errorHandler);
server = http.createServer(app).listen(app.get("port"), function() {
return console.log("Express server listening on port " + app.get("port"));
});
app.use(domainMiddleware({
server: server,
server: server
//killTimeout: 30000,
}))
}));
module.exports = server;