2013-10-13 178 views
8

我已經使用angular重寫了一個web應用程序。但是現在我遇到這樣的問題,它不像window.onerror = function(...) { ... }那樣容易將客戶端錯誤發送到服務器。但這對於檢測錯誤非常有用。AngularJS:客戶端錯誤的服務器端日誌記錄

我添加了一個自定義異常處理程序的角度使用下面的代碼

但這不會讓我得到其中的例外是從哪裏來的位置。任何提示/經驗如何解決這個問題?我也喜歡能夠與http://stacktracejs.com/

+0

作爲參考,我們現在可以從異常對象中的堆棧跟蹤信息。 exception.message和exception.stack。更多信息可以在這裏找到:http://www.ozkary.com/2016/04/angularjs-log-client-errors-to-server.html – ozkary

+0

在這裏看到一個工作stacktrace到家解決方案➝http:/ /www.bennadel.com/blog/2542-logging-client-side-errors-with-angularjs-and-stacktrace-js.htm –

回答

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 
    ... 
} 
0

工作的解決方案免責聲明:Im django爲基礎的應用程序開發人員。

我可以建議你使用基於raven的解決方案。它是基於django的帶有許多綁定(也是javascript)和偉大的監控應用程序sentry的日誌聚合服務。

5

我們可以使用stacktrace.js by 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
相關問題