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

时间:2013-10-13 22:34:42

标签: javascript angularjs exception logging error-handling

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

我使用以下代码

为角度添加了自定义异常处理程序
    $provide.decorator("$exceptionHandler", function($delegate) {
    return function(exception, cause) {
        $delegate(exception, cause);
        log2server(exception + " (" + cause + ")");
    };
});

但是这不允许我获得异常来自的位置。任何提示/经验如何解决这个问题?我也很喜欢能够使用http://stacktracejs.com/

的解决方案

3 个答案:

答案 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

  1. AngularJS具有良好的错误处理能力。
  2. stacktrace.js尝试解决在所有浏览器中获取正确错误信息的重要问题。
  3. 所以我们可以在stacktrace.js周围创建一个角度包装器,它可以提供全面的错误处理。

    以下是2条博客文章非常清楚地解释了如何使用AngularJSstacktrace.js将客户端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

答案 2 :(得分:0)

免责声明:基于Im Django的应用程序开发人员。

我建议您使用基于raven的解决方案。它正在使用许多绑定(也是javascript)记录agregation服务,并基于django监控应用程序sentry

相关问题