2011-07-26 104 views
7

我正在開發一個Web應用程序,該應用程序即將推出給一些用戶進行測試。顯然會出現bug,所以我想捕獲它們以便更容易地開發修復程序。有沒有一種方法可以攔截我的Web應用程序中的任何控制檯消息(包括browser/js錯誤和由console.log生成的消息),以便我可以將它們發送到服務器上的日誌記錄服務並讓它們可用於調試?攔截網絡瀏覽器控制檯消息

回答

5

是的。

攔截console.log()電話:

console['log'] = function(msg){ 
    // do wahtever you need with msg here 
} 

攔截錯誤(所謂尿布反模式):

try { 
    // your app's code 
} catch(err) { 
    // do what you to do in case of error need here 
} 

這裏是證明:jsfiddle

但是,我會建議創建自己的功能,這將處理console.log()的目的,並可能在生產中被關閉。另外,它會正常工作(這意味着:不會拋出錯誤),當瀏覽器不支持console.log()調用。這可能看起來像:後期

window['log'] = function(msg){ 
    if (typeof console != 'undefined' && typeof console.log != 'undefined'){ 
     console.log(msg); 
    } 
} 
+0

有關如何讓IE7的這項工作的任何提示也?我剛剛添加了您在答案中提供的最後一個片段,但是在IE7中控制檯仍然未定義。 –

1

一點點... ...這可能是一個有趣的閱讀,只需要實現發送到服務器的方法,但是這是微不足道的。 Taking Over console.log