我正在重写Angular $ exceptionHandler以执行一些自定义异常日志记录。不幸的是,我的日志记录服务使用$ http进行日志记录,这依赖于$ exceptionHandler。任何想法的模式,可以解决我的循环引用,仍然允许我通过$ http登录?
这里是我的服务覆盖$ exceptionHandler的:
angular.module('dashboard').factory('$exceptionHandler', ['$log', 'Logging',
function($log, Logging){
return function globalErrorHandler(exception, cause){
var itemToLog = new logItem('dashboard', 'General Error', exception.message + ": " + exception.stack);
Logging.logEvent(itemToLog);
$log.warn(exception, cause);
}
}]);
和我的自定义日志记录服务:
angular.module('dashboard').factory('Logging', ['$http', function($http) {
return {
logEvent: function(item){
$http.post('/api/loggingservice/event', item)
.success(function(data){
return data;
}).
error(function(data){
console.log('error logging event: '+JSON.stringify(data));
});;
}
};
}]);
我收到错误消息是: angular.min.js:6未捕获的错误:[$ injector:cdep] https://docs.angularjs.org/error/ $ injector/cdep?p0 = $ http%20%3C-%20Logging%20%3C-%20 $ exceptionHandler%20%3C-%20 $ rootScope%20%3C-%20 $ http%20%3C-%20UserManagement%20%3C-%20Menus
请更新与错误信息的问题,你越来越。这将使它更清晰,更容易找到。 – estus
我已经添加了错误信息,并且正在测试您的答案 - 看起来很有希望。 – DShultz