我使用angular重写了一个Web应用程序。但现在我遇到的问题是,将{client}错误发送到服务器并不像window.onerror = function(...) { ... }
那么容易。但这对检测错误非常有帮助。
我使用以下代码
为角度添加了自定义异常处理程序 $provide.decorator("$exceptionHandler", function($delegate) {
return function(exception, cause) {
$delegate(exception, cause);
log2server(exception + " (" + cause + ")");
};
});
但是这不允许我获得异常来自的位置。任何提示/经验如何解决这个问题?我也很喜欢能够使用http://stacktracejs.com/
的解决方案答案 0 :(得分:10)
我目前正在使用TraceKit,这似乎效果很好。
只需将其添加到角度启动代码
即可$provide.decorator("$exceptionHandler", function($delegate) {
return function(exception, cause) {
TraceKit.report(exception);
$delegate(exception, cause);
};
});
+这个地方
TraceKit.report.subscribe(function(errorReport) {
var msg = 'msg: ' + errorReport.message + '\n\n';
msg +="::::STACKTRACE::::\n"
for(var i = 0; i < errorReport.stack.length; i++) {
msg += "stack[" + i + "] " + errorReport.stack[i].url + ":" + errorReport.stack[i].line + "\n";
}
// log to server
...
}
答案 1 :(得分:5)
我们可以使用stacktrace.js by Eric Wendelin
AngularJS
具有良好的错误处理能力。stacktrace.js
尝试解决在所有浏览器中获取正确错误信息的重要问题。所以我们可以在stacktrace.js周围创建一个角度包装器,它可以提供全面的错误处理。
以下是2条博客文章非常清楚地解释了如何使用AngularJS
和stacktrace.js
将客户端JS错误记录到服务器端。
答案 2 :(得分:0)
免责声明:基于Im Django的应用程序开发人员。
我建议您使用基于raven的解决方案。它正在使用许多绑定(也是javascript)记录agregation服务,并基于django监控应用程序sentry。