2010-09-13 46 views
20

我有一個嚴重的JavaScript問題,很難在我們的任何開發/測試/產品環境中重現。儘管如此,我們的客戶始終如一地報道。有時我們認爲它是瀏覽器特定的 - 有時我們認爲它是特定於操作的 - 有時我們認爲它與cookie相關。這是一個艱難的過程,我們被拉到太多不同的方向,他們都是短缺。在生產中捕獲JavaScript錯誤的最佳方法?

我們認爲問題出現在我們的一個主要JavaScript文件中 - 但該文件非常龐大。我們在本文件中指出了過去的其他問題 - 併成功地使用try/catch塊來防範未來的問題 - 但是,目前我們不確定發生這些新問題的位置。

我們已經通過我們的服務器日誌進行了搜索,我們發現的信息沒有用處。

我想知道如果使用JavaScript日誌框架會幫助我們解決問題。將實施類似「log4javascript」的捕獲/記錄我們用戶的活動,而不僅僅是我們?有什麼建議?還有其他人在這種情況下?你採用什麼策略來更好地理解你的錯誤?

+0

是的,[log4js](http://log4js.berlios.de/)或者log4javascript都是很棒的想法。 – 2010-09-13 14:15:26

回答

20

log4javascript的AjaxAppender可用於發送日誌消息到服務器。

var log = log4javascript.getLogger("serverlog"); 
var ajaxAppender = new log4javascript.AjaxAppender("http://example.com/clientlogger"); 
log.addAppender(ajaxAppender); 

你可以把你的代碼信息記錄,通話,並添加一個window.onerror處理趕在你的代碼不被try/catch塊捕獲錯誤的:

window.onerror = function(errorMsg, url, lineNumber) { 
    log.fatal("Uncaught error " + errorMsg + " in " + url + ", line " + lineNumber); 
}; 

您還需要在服務器上創建的東西處理來自瀏覽器的記錄請求。

完全披露:我是log4javascript的作者。

+0

謝謝蒂姆 - 我正在調查! – rsturim 2010-09-13 14:50:33

+2

我第二個log4javascript的AjaxAppender,完成了這項工作。在這裏解釋:http://www.adamjamesnaylor。com/2012/10/10/Logging-Clientside-JavaScript-Errors-On-The-Server.aspx – 2012-10-26 10:43:58

+0

Bugsnag現在這樣做..只是FYI – 2014-01-18 22:11:38

相關問題