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

AngularJS: serverside logging of clientside errors

本文关键字:服务器端 日志 记录 错误 客户端 AngularJS      更新时间:2023-09-26

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

我使用以下代码将自定义异常处理程序添加到 angular

    $provide.decorator("$exceptionHandler", function($delegate) {
    return function(exception, cause) {
        $delegate(exception, cause);
        log2server(exception + " (" + cause + ")");
    };
});

但这不允许我获得异常来自的位置。任何提示/经验如何解决这个问题?我也希望有一个能够与 http://stacktracejs.com/一起使用的解决方案

我目前正在使用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
    ...
}

We can use stacktrace.js作者:Eric Wendelin

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

因此,我们可以围绕 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

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

我可以建议你使用基于乌鸦的解决方案。它是具有许多绑定(也是javascript)的日志记录聚合服务,以及基于django的出色监视应用程序哨兵。