2010-08-11 491 views
9

有什麼方法可以導出記錄到Google Chrome瀏覽器的javascript控制檯的消息嗎?從Google Chrome瀏覽器導出Javascript控制檯日誌

如果沒有,任何人都可以提出一個很好的方法來診斷客戶端機器上的JavaScript問題?儘管建立了相同的環境,但我無法在本地複製問題。

回答

17

第1步:添加了一堆的console.log報表,這將有助於診斷您的問題

第2步:添加邏輯重新定義您的客戶端系統上的console.log因此,它實際上節省了它的參數窗口.log(或其他),而不是實際將它們記錄到控制檯。

window.log = [] 
console = console || {"log":function(x) {window.log.push(x);}} 

步驟3:AJAX請求的其中一個觸發onunload的處理程序添加到您的服務器window.log的內容作爲其參數

步驟4中的一個:利潤! ;-)

這個系統還有一個額外的好處就是(一旦你安裝了它),你可以不加區別地使用console.log,無論你是在你的開發環境還是你的實時環境中,它都會做正確的事情。

+0

附:並非所有瀏覽器都支持onUnload;如果你的客戶沒有,你可能會想要在每個console.log上觸發AJAX調用(或者使用window.setInterval頻繁地「輪詢」window.log)。 – machineghost 2010-08-11 20:55:41

+0

有趣和棘手..但看起來很複雜! (特別是第3步)沒有更簡單的方法來做到這一點..? – Dexter 2010-08-11 20:58:57

+0

這真的很簡單,但只是試圖表明我已經添加了第二個答案。 – machineghost 2010-08-11 21:52:04

1

您可以使用我的JavaScript日誌庫log4javascript。你將需要:

  • 設置log4javascript使用AjaxAppender發送日誌信息到服務器(見quick start guide,接近底部)
  • 添加日誌記錄調用你的JavaScript
  • 收集服務器上的日誌消息使用你選擇的技術
7

這是我以前的答案的一個稍短/簡單的版本。爲了方便起見,我們只需在每個日誌上進行一次AJAX調用,並且讓事情變得更容易,我們將使用jQuery來執行「繁重工作」。 (如果你使用jQuery以外的JS庫,它應該有一些類似的方法;如果沒有,或者如果你沒有使用JS庫... 認真的考慮jQuery!)哦,會拋出一些服務器端的僞代碼來演示這個等式的部分是多麼容易。

第1步:添加了一堆的console.log報表,這將有助於診斷您的問題

第2步:添加邏輯,以便發送日誌到您的服務器重新定義您的客戶端系統上的console.log如果沒有控制檯

var SERVER_URL = "www.yourServer.com/ajaxLogger.jsp"; 
var ajaxConsole = {"log":function(x) { 
    $.get(SERVER_URL, {"log":x}); 
}} 
console = console || ajaxConsole; // If there is no console, use the AJAX one 

第3步:在服務器上創建一個登錄頁面

以下示例使用僞代碼,因爲每個人都有不同的服務器端語言:

String log = pageParameters["log"]; 
Database.execute("INSERT INTO yourLogTable (log, date) VALUES ('" + 
     dbEscape(log) +"', current date)"); 
1

有一個開源工具,它允許您將所有console.log輸出保存在服務器上的文件中 - JS LogFlush(plug!)。

JS LogFlush是一個集成的JavaScript記錄解決方案,其中包括:

  • 跨瀏覽器UI少更換的console.log的 - 在客戶端。
  • 日誌存儲系統 - 在服務器端。

Demo