Skip to content

Instantly share code, notes, and snippets.

@ndamnjanovic
Created September 5, 2016 09:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ndamnjanovic/5ae6ae7398292aef8d186e8c8ed3fbc5 to your computer and use it in GitHub Desktop.
Save ndamnjanovic/5ae6ae7398292aef8d186e8c8ed3fbc5 to your computer and use it in GitHub Desktop.
error handler
'use strict';
_app
.provider("$exceptionHandler", {
$get: function( ErrorLogService ) {
return( ErrorLogService );
}
}
)
.factory('ErrorLogService', function($log, $window, stacktraceService, routes) {
var userAgentData = "<p>Browser CodeName: " + navigator.appCodeName + "</p>";
userAgentData+= "<p>Browser Name: " + navigator.appName + "</p>";
userAgentData+= "<p>Browser Version: " + navigator.appVersion + "</p>";
userAgentData+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>";
userAgentData+= "<p>Browser Language: " + navigator.language + "</p>";
userAgentData+= "<p>Browser Online: " + navigator.onLine + "</p>";
userAgentData+= "<p>Platform: " + navigator.platform + "</p>";
userAgentData+= "<p>User-agent header: " + navigator.userAgent + "</p>";
userAgentData+= "<p>User-agent language: " + navigator.systemLanguage + "</p>";
var lastErrorStackTrace = '';
function log( exception, cause ) {
$log.error.apply( $log, arguments );
try {
var errorMessage = exception.toString();
var stackTrace = stacktraceService.print({ e: exception });
if (!_.isEqual(stackTrace, lastErrorStackTrace)) {
lastErrorStackTrace = stackTrace;
$.ajax({
type: "POST",
url: routes.error_log,
contentType: "application/json",
data: angular.toJson({
errorUrl: $window.location.href,
errorMessage: errorMessage,
stackTrace: stackTrace,
cause: ( cause || "" ),
userAgentData: userAgentData
})
});
}
} catch ( loggingError ) {
$log.warn( "Error logging failed" );
$log.log( loggingError );
}
}
return( log );
})
.factory("stacktraceService", function() {
return({
print: printStackTrace
});
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment