有什麼方法可以導出記錄到Google Chrome瀏覽器的javascript控制檯的消息嗎?從Google Chrome瀏覽器導出Javascript控制檯日誌
如果沒有,任何人都可以提出一個很好的方法來診斷客戶端機器上的JavaScript問題?儘管建立了相同的環境,但我無法在本地複製問題。
有什麼方法可以導出記錄到Google Chrome瀏覽器的javascript控制檯的消息嗎?從Google Chrome瀏覽器導出Javascript控制檯日誌
如果沒有,任何人都可以提出一個很好的方法來診斷客戶端機器上的JavaScript問題?儘管建立了相同的環境,但我無法在本地複製問題。
第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,無論你是在你的開發環境還是你的實時環境中,它都會做正確的事情。
您可以使用我的JavaScript日誌庫log4javascript。你將需要:
這是我以前的答案的一個稍短/簡單的版本。爲了方便起見,我們只需在每個日誌上進行一次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)");
有一個開源工具,它允許您將所有console.log
輸出保存在服務器上的文件中 - JS LogFlush(plug!)。
JS LogFlush是一個集成的JavaScript記錄解決方案,其中包括:
- 跨瀏覽器UI少更換的console.log的 - 在客戶端。
- 日誌存儲系統 - 在服務器端。
附:並非所有瀏覽器都支持onUnload;如果你的客戶沒有,你可能會想要在每個console.log上觸發AJAX調用(或者使用window.setInterval頻繁地「輪詢」window.log)。 – machineghost 2010-08-11 20:55:41
有趣和棘手..但看起來很複雜! (特別是第3步)沒有更簡單的方法來做到這一點..? – Dexter 2010-08-11 20:58:57
這真的很簡單,但只是試圖表明我已經添加了第二個答案。 – machineghost 2010-08-11 21:52:04