Skip to content

Commit

Permalink
Merge pull request #5 from soxhub/2976-upgrade-rollbar
Browse files Browse the repository at this point in the history
Upgraded rollbar to newest version
  • Loading branch information
zimmermanw84 committed Jun 13, 2017
2 parents 47fcbc8 + 3da7b05 commit 4edb2a8
Show file tree
Hide file tree
Showing 6 changed files with 1,779 additions and 187 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,5 @@ build/Release
# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules

.envrc
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ A Hapi plugin for rollbar painless integration
options: {
accessToken: '',
environment: '', // optional, defaults to process.env.NODE_ENV
exitOnUncaughtException: true // optional, defaults to true
handleUncaughtExceptions: true // optional, defaults to false
}
}, function (err) {
if (err) throw err;
Expand All @@ -29,7 +29,6 @@ A Hapi plugin for rollbar painless integration

server.plugins['rollbar-hapi'].rollbar // the rollbar module, already initialised

server.methods.handleError(err, req, next); // == rollbar.handleError
server.methods.handleErrorWithPayloadData(err, opts, req, next); // == rollbar.handleErrorWithPayloadData
server.methods.reportMessage(msg, level, req, next); // == rollbar.reportMessage
server.methods.reportMessageWithPayloadData(msg, opts, req, next); // == rollbar.reportMessageWithPayloadData
The exposed `rollbar` above can be used to access rollbar's `log`, `debug`, `info`, `warning`,
`error`, and `critical` methods

147 changes: 59 additions & 88 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,104 +34,75 @@
* *******************************************************************/

// Load modules
var rollbar = require('rollbar');
var Rollbar = require('rollbar');
var util = require('util');

exports.register = function (server, options, next) {
var preError = options.preError || function preError(err) { return err; };
var rollbarKey = options.accessToken;
var rollbarOpts = options;
rollbarOpts.environment = rollbarOpts.environment || process.env.NODE_ENV;
rollbarOpts.exitOnUncaughtException = typeof options.exitOnUncaughtException !== 'undefined' ?
options.exitOnUncaughtException : true;
var preError = options.preError || function preError(err) { return err; };

var rollbarOpts = options;
rollbarOpts.environment = rollbarOpts.environment || process.env.NODE_ENV;
rollbarOpts.handleUncaughtExceptions = typeof options.handleUncaughtExceptions !== 'undefined' ?
options.handleUncaughtExceptions : false;
var rollbarAccessToken = rollbarOpts.accessToken;
rollbarOpts.enabled = !!rollbarAccessToken;

var rollbar = new Rollbar({
accessToken: rollbarOpts.accessToken,
environment: rollbarOpts.environment,
handleUncaughtExceptions: rollbarOpts.handleUncaughtExceptions,
enabled: rollbarOpts.enabled
});


server.ext('onPreResponse', function onPreResponse(request, next) {
var response = preError(request.response);
if (response && response.isBoom) {
rollbar.error(response, request, response.output, logError);
}
next.continue();
});

server.on('request-internal', function requestInternal(request, event, tags) {
if (tags.error && tags.state) {
return rollbar.warning(JSON.stringify(event), formatReq(request), logError);
}
});

server.on('request-error', function requestError(request, err) {
return rollbar.error(err, formatReq(request), logError);
});

server.expose('rollbar', rollbar);

rollbar.init(rollbarKey, rollbarOpts);
rollbar.handleUncaughtExceptions(rollbarKey, rollbarOpts);

server.on('stop', function stop() {
rollbar.shutdown();
});

server.ext('onPreResponse', function onPreResponse(request, next) {
var response = preError(request.response);
if (response && response.isBoom) {
rollbar.handleErrorWithPayloadData(response, response.output, request, logError);
}

next.continue();
});

server.on('log', function rollbarLog(event, tags) {
if (tags.rollbarError) {
return rollbar.handleError(event.err, formatReq(event.req));
}
if (tags.rollbarMessage) {
return rollbar.reportMessage(event.msg, event.level || 'info', formatReq(event.req), logError);
}
});

server.on('request-internal', function requestInternal(request, event, tags) {
if (tags.error && tags.state) {
return rollbar.reportMessage(event, event.level || 'warning', formatReq(request), logError);
}
});

server.on('request-error', function requestError(request, err) {
return rollbar.handleError(err, formatReq(request), logError);
});

server.expose('rollbar', rollbar);

server.method('handleError', function handleError(err, req, next) {
rollbar.handleError(err, formatReq(req), logError);
next();
});

server.method('handleErrorWithPayloadData', function handleErrorWithPayloadData(err, opts, req, next) {
rollbar.handleErrorWithPayloadData(err, opts, formatReq(req), logError);
next();
});

server.method('reportMessage', function reportMessage(msg, level, req, next) {
rollbar.reportMessage(msg, level, formatReq(req), logError);
next();
});

server.method('reportMessageWithPayloadData', function reportMessageWithPayloadData(msg, opts, req, next) {
rollbar.reportMessageWithPayloadData(msg, opts, formatReq(req), logError);
next();
});

next();
};

exports.register.attributes = {
pkg: require('../package.json')
};
pkg: require('../package.json') };

function logError(err, rbPayload, rbResp) {
if (err) {
util.log(err);
return;
}
if (rbResp && rbResp.uuid) {
util.log('[Rollbar] link: https://rollbar.com/occurrence/uuid/?uuid=' + rbResp.uuid);
}
if (err) {
util.log(err);
return;
}
if (rbResp && rbResp.uuid) {
util.log('[Rollbar] link: https://rollbar.com/occurrence/uuid/?uuid=' + rbResp.uuid);
}
}

function formatReq(request) {
if (!request) return;

let rollbarRequest = {
ip: request.info.remoteAddress,
headers: request.headers,
url: request.url.path,
method: request.method,
protocol: request.connection.info.protocol,
route: {
path: request.route.path
}
};

return rollbarRequest;
if (!request) return;

let rollbarRequest = {
ip: request.info.remoteAddress,
headers: request.headers,
url: request.url.path,
method: request.method,
protocol: request.connection.info.protocol,
route: {
path: request.route.path
}
};

return rollbarRequest;
}
Loading

0 comments on commit 4edb2a8

Please sign in to comment.