8

angularを使用してWebアプリケーションを書き直しました。window.onerror = function(...) { ... }しかし、クライアント側のエラーをサーバーに送信するのは簡単ではないという問題があります。しかし、これはエラーを検出するのに非常に役立ちます。

次のコードを使用して、角度にカスタム例外ハンドラーを追加しました

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

しかし、これでは例外が発生した場所を取得できません。これに取り組むためのヒント/経験はありますか? http://stacktracejs.com/で動作するソリューションも気に入っています。

4

3 に答える 3

10

私は現在、非常にうまく機能しているように見えるTraceKitを使用しています。

これをAngularスタートアップコードに追加するだけです

$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
    ...
}
于 2014-01-10T00:53:52.743 に答える
5

Eric Wendelin による stacktrace.jsを使用できます

  1. AngularJS優れたエラー処理を備えています。
  2. stacktrace.jsすべてのブラウザで正しいエラー情報を取得するという重要な問題を解決しようとしています。

そのため、包括的なエラー処理を提供する stacktrace.js の周りに角度のあるラッパーを作成できます。

AngularJS以下は、 と を使用してクライアント側の JS エラーをサーバー側に記録する方法を非常にうまく説明している 2 つのブログ投稿です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
于 2015-02-18T06:01:44.560 に答える
0

免責事項: 私は django ベースのアプリケーション開発者です。

ravenベースのソリューションを使用して提案できます。多くのバインディング ( javascriptも) を備えたログ集計サービスと、django に基づく優れた監視アプリの歩哨です。

于 2013-10-13T22:50:54.170 に答える