2012-04-18 26 views
6

在學校項目中,我運行了一些通過控制檯窗口輸入並從那裏運行的JavaScript。該腳本處理網頁並將結果輸出到控制檯。將控制檯以持久方式存儲在Chrome中

問題:以持久的方式保存/保存這些結果,這些結果在瀏覽器關閉,腳本故障/頁面重新加載,或者如果可能的話,電腦崩潰時不會消失。

我想過使用諸如Log4js或jStorage(jQuery Storage)之類的框架,但由於這不是我操縱的網站,因此我無法在頁面中添加代碼或標記。

有沒有辦法做到這一點?

注意:將結果記錄到控制檯,我可以將它們發送到某個地方,或者如果使它更容易記錄,可以使用它們做其他事情並不重要。

謝謝。

+0

Chrome的控制檯日誌可以在頁面重新加載時保持不變,這是一個內置選項。 – katspaugh 2012-04-18 12:50:54

+0

謝謝。可能是有用的,如果我不能工作了磁盤記錄功能 – 2012-04-18 15:40:50

+0

比較可惜的是OP從來沒有接受一個答案 – Mawg 2016-07-04 09:27:44

回答

1

使用console.error(arg); - 它會發送控制檯消息到瀏覽器的stderr(我敢肯定它會做這樣的發佈版本了。)

從命令行啓動瀏覽器並重新定向您stderr到一些文件中(沿着chrome 2>errlog的行)。

+0

你的意思是下面--args的參數應該是2> ERRLOG,這意味着2級(錯誤)的日誌被記錄到文件ERRLOG? 任何想法這個文件將被保存?我在Mac上。 – 2012-04-18 13:59:32

+0

'2> errlog'意思是「將stderr(其句柄爲2)重定向到一個名爲」errlog「的文件中。您可以提供任何文件名(包括完整路徑)。 – 2012-04-18 14:15:57

+1

我指定了完整路徑,並且在重新啓動Chrome後創建了該文件,這是一個好兆頭。儘管如此,在執行了一些console.error(args)之後,它以紅色文本顯示給我的參數,它沒有添加到文本文件中。文本文件中的唯一一行如下: [0418/164110:INFO:breakpad_mac.mm(148)]禁用了Breakpad 這是我用AppleScript腳本打開Chrome的參數: do shell script「/ Applications/Google \\ Chrome.app/Contents/MacOS/Google \\ Chrome - 啓用日誌記錄--v = 1 2>/Users/* myusername */Documents/errlog。TXT」 – 2012-04-18 14:43:52

8

如果你想自動保存在Chrome控制檯你擁有了一切與這​​些選項來運行瀏覽器:

--enable-logging --v=1 

它會保存一個完整日誌,其數據目錄中鉻(請注意,該文件將每次運行都會被覆蓋)。更多詳情here

其他方法:安裝Sawbuck實用程序來管理Chrome日誌。

+0

謝謝,我會檢查出來! – 2012-04-18 13:32:06

+0

我似乎無法找到日誌文件。任何想法,它位於?林在Mac上,我查了Chrome.app的包裝內容。 – 2012-04-18 13:56:32

+0

它應該是在〜 /圖書館/應用程序支持/ Google/Chrome /默認,無論如何檢查http://www.chromium.org/for-testers/enable-logging – 2012-04-18 13:58:25

7

下面是日誌存儲到WebStorage一個小功能(瀏覽器會話之間仍然存在):

console.plog = function() { 
    var key = Date.now(); 
    var value = JSON.stringify([].slice.call(arguments)); 
    localStorage.setItem(key, value); 
    console.log.apply(console, arguments); 
} 

要恢復的日誌,你必須運行下面的表達式:

(function restoreLogs() { 
    var timestamps = Object.keys(localStorage).sort(); 
    timestamps.forEach(function (ts) { 
     var logArgs = JSON.parse(localStorage.getItem(ts)); 
     console.log.apply(console, logArgs); 
    }); 
}());