Skip to content

Instantly share code, notes, and snippets.

@mrsweaters
Created August 10, 2017 23:48
Show Gist options
  • Select an option

  • Save mrsweaters/86e49f585cda4d7da5f69628e3a048e4 to your computer and use it in GitHub Desktop.

Select an option

Save mrsweaters/86e49f585cda4d7da5f69628e3a048e4 to your computer and use it in GitHub Desktop.
Honeybadger Logger
import angular from 'angular';
import Honeybadger from 'honeybadger-js';
Honeybadger.configure({
apiKey: 'api-key',
environment: (process.env.name === 'build') ? 'production' : process.env.name,
revision: COMMIT_SHA,
ignorePatterns: [new RegExp('password', 'i')]
});
const appLogger = angular
.module('app.logger', [])
.config(['$provide', $provide => {
$provide.constant('logDecorator', logDecorator);
$provide.decorator('$log', logDecorator);
logDecorator.$inject = ['$delegate', '$injector'];
function logDecorator($delegate, $injector) {
var errorFn = $delegate.error;
$delegate.error = function(e) {
let user;
if (typeof(Storage) !== 'undefined') {
user = localStorage.getItem('helio.user');
}
let currentState = $injector.get('$state').current;
let currentParams = $injector.get('$stateParams');
if (user) {
Honeybadger.notify(e, {
context: {
user_id: user.id,
user_email: user.email,
auth: 'user',
state: currentState
},
params: currentParams
});
} else {
Honeybadger.notify(e, {
context: {
auth: 'visitor',
state: currentState
},
params: currentParams
});
}
errorFn.apply(null, arguments);
};
return $delegate;
}
}])
.name;
export default appLogger;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment