AngularJS:客户端错误的服务器端日志记录

Dan*_*iel 8 javascript error-handling logging exception angularjs

我用角度重写了一个Web应用程序.但现在我遇到的问题是window.onerror = function(...) { ... },将客户端错误发送到服务器并不容易.但这对检测错误非常有帮助.

我使用以下代码为angular添加了一个自定义异常处理程序

    $provide.decorator("$exceptionHandler", function($delegate) {
    return function(exception, cause) {
        $delegate(exception, cause);
        log2server(exception + " (" + cause + ")");
    };
});
Run Code Online (Sandbox Code Playgroud)

但这不会让我得到异常来自的位置.任何提示/经验如何解决这个问题?我也很喜欢能够与http://stacktracejs.com/合作的解决方案

Dan*_*iel 10

我目前正在使用TraceKit,它看起来效果很好.

只需将其添加到角度启动代码即可

$provide.decorator("$exceptionHandler", function($delegate) {
    return function(exception, cause) {
        TraceKit.report(exception);
        $delegate(exception, cause);
    };
});
Run Code Online (Sandbox Code Playgroud)

+这个地方

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
    ...
}
Run Code Online (Sandbox Code Playgroud)


Man*_*j G 5

我们可以使用Eric Wendelin的stacktrace.js

  1. AngularJS 有很好的错误处理.
  2. stacktrace.js 试图解决在所有浏览器中获取正确错误信息的重要问题.

所以我们可以在stacktrace.js周围创建一个角度包装器,它提供了全面的错误处理.

以下是2篇博文,非常好地解释了如何使用AngularJS和将客户端JS错误记录到服务器端stacktrace.js.

  1. http://engineering.talis.com/articles/client-side-error-logging/
  2. http://www.bennadel.com/blog/2542-logging-client-side-errors-with-angularjs-and-stacktrace-js.htm