From dac2fc682dfedbd9373b9d2695a857b1cf7afebb Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 13 Dec 2014 14:48:14 +0100 Subject: [PATCH] feat(loggly): change tag based on base_url, logs internal server errors --- src/controllers/user.js | 5 +++-- src/logging.js | 6 +++--- src/middleware.js | 7 +++++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/controllers/user.js b/src/controllers/user.js index 68cc7b9ccb..e24800980a 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -284,14 +284,15 @@ api.cron = function(req, res, next) { User.findById(user._id, cb); } ], function(err, saved) { - if(err) logging.loggly({error: e, stack: e.stack}) + if(err) logging.loggly({error: "Cron caught", stack: e.stack || e}) res.locals.user = saved; next(err,saved); user = progress = quest = null; }); }catch(e){ logging.loggly({ - error: e.stack || e + error: "Cron uncaught", + stack: e.stack || e }); throw e; } diff --git a/src/logging.js b/src/logging.js index 63ab51ade9..441af207ee 100644 --- a/src/logging.js +++ b/src/logging.js @@ -3,6 +3,8 @@ var winston = require('winston'); require('winston-mail').Mail; require('winston-newrelic'); +var logger, loggly; + if (nconf.get('NODE_ENV') == 'production'){ var loggly = require('loggly').createClient({ token: nconf.get('LOGGLY:token'), @@ -14,13 +16,11 @@ if (nconf.get('NODE_ENV') == 'production'){ // // Optional: Tag to send with EVERY log message // - tags: ['heroku'], + tags: [('heroku-'+nconf.get('BASE_URL'))], json: true }); } -var logger; - if (logger == null) { logger = new (winston.Logger)({}); if (nconf.get('NODE_ENV') == 'production') { diff --git a/src/middleware.js b/src/middleware.js index 2efe9b470f..56e72bda7e 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -75,6 +75,13 @@ module.exports.errorHandler = function(err, req, res, next) { "\n\nbody: " + JSON.stringify(req.body) + (res.locals.ops ? "\n\ncompleted ops: " + JSON.stringify(res.locals.ops) : ""); logging.error(stack); + logging.loggly({ + error: "Uncaught error", + stack: (err.stack || err.message || err), + body: req.body, headers: req.header, + auth: (req.headers['x-api-user'] + ' | ' + req.headers['x-api-key']), + originalUrl: req.originalUrl + }); var message = err.message ? err.message : err; message = (message.length < 200) ? message : message.substring(0,100) + message.substring(message.length-100,message.length); res.json(500,{err:message}); //res.end(err.message);