[英]Error-logging for javascript on client side
我的項目包含很多帶有表單的頁面。 這是銀行CRM系統的后端,因此可以捕獲和調查工作過程中的任何錯誤。 在服務器端,我們有增強的java異常系統,但是如果在客戶端發生錯誤 - javascript我們現在獲得的唯一信息是IE中的js-error窗口,或者有時是高級用戶制作的頁面截圖。
Javascript代碼包含Jquery支持的UI擴展和硬編碼的內聯事件處理程序和函數。
所以我問是否可以使用任何捕獲任何類型的js-errors的方法? 一些額外的庫或某些東西可以給我一個像Mozilla中的firebug或Chrome中的web控制台的堆棧跟蹤?
查看window.onerror
。 如果您想捕獲任何錯誤並將它們報告給服務器,那么您可以嘗試使用AJAX請求。
window.onerror = function(errorMessage, errorUrl, errorLine) {
jQuery.ajax({
type: 'POST',
url: 'jserror.jsf',
data: {
msg: errorMessage,
url: errorUrl,
line: errorLine
},
success: function() {
if (console && console.log) {
console.log('JS error report successful.');
}
},
error: function() {
if (console && console.error) {
console.error('JS error report submission failed!');
}
}
});
// Prevent firing of default error handler.
return true;
}
免責聲明:我是Sentry的首席執行官和創始人,這是一種開源和付費服務,可以為許多語言(包括Javascript)進行崩潰報告。
捕獲前端異常可能非常具有挑戰性。 技術已經變得更好(瀏覽器JS引擎),但仍有很多局限性。
window.onerror
(主要是因為瀏覽器歷史上在這里提供了不好的信息)。 我們在raven.js客戶端(基於TraceKit)中所做的是修補許多函數來將它們包裝在try / catch語句中。 例如, window.setTimeout
。 有了這個,我們就可以安裝錯誤處理程序,在大多數瀏覽器中生成完整的堆棧跟蹤。 您應該在服務器上注意的一些事項:
http://exceptionhub.com應該訣竅。 http://errorception.com/不提供調試信息,但也很好看。
proxino似乎不知道他們在做什么,他們在他們的記錄器代碼中包含一個完整的jQuery來記錄我上次檢查時的錯誤事件。 我不相信一個對客戶端JavaScript很少掌握的服務來記錄我的JavaScript錯誤。
我建議使用JsLog.me服務
除了錯誤和堆棧跟蹤之外,它還可以捕獲整個控制台輸出。 我們在項目中使用它,記錄整個控制台日志有助於我們的QA團隊記錄問題再現方式。 此外,它適用於Chrome控制台中的大型JSON對象,並且具有搜索功能。
如果您的網站使用的是Google Analytics,您可以執行以下操作:
window.onerror = function(message, source, lineno, colno, error) {
if (error) message = error.stack;
ga('send', 'event', 'window.onerror', message, navigator.userAgent);
}
關於上面代碼的一些評論:
代碼到位后,您就可以查看用戶的Javascript錯誤:
Behavior
部分,然后點擊“ Top Events
報告。 window.onerror
。 Secondary dimension
按鈕並在顯示的文本框中輸入“ Event Label
,為用戶的操作系統/瀏覽器版本添加一列報告。 Atatus捕獲JavaScript錯誤並捕獲錯誤之前的用戶操作。 這有助於更好地理解錯誤。 Atatus幫助您監控前端,不僅僅是出錯,還有其性能(真實用戶監控)
免責聲明:我是Atatus的網絡開發人員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.