在Chrome中以持久的方式存储控制台日志记录

7
在一个学校项目中,我通过控制台窗口输入并运行一些JavaScript。该脚本操纵网页并将结果输出到控制台。
问题:如何以持久的方式保存这些结果,使其不会因为关闭浏览器、脚本故障或页面重新加载而消失,如果可能的话,也不会因为电脑崩溃而丢失。
我考虑使用Log4js或jStorage(jQuery存储)等框架,但由于这不是我正在操作的网站,我无法添加代码或标记到页面中。
有没有办法解决这个问题?
注意:记录结果到控制台并不是必要的,如果可以更容易地记录结果,我可以将它们发送到其他地方或进行其他处理。
谢谢。

Chrome的控制台日志可以在页面重新加载后保留,这是一个内置选项。 - katspaugh
谢谢。如果我无法解决磁盘记录功能,这可能会有用。 - Erik Wendel
很遗憾,OP从未接受过答案。 - Mawg says reinstate Monica
3个回答

9

这是一个小函数,可以将日志存储到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);
    });
}());

8

如果您想自动保存Chrome控制台中的所有内容,您需要使用以下选项运行Chrome:

--enable-logging --v=1

它将在其数据目录中保存Chrome的完整日志(请注意,文件将在每次运行时被覆盖)。更多细节在这里

另一种方法:安装Sawbuck实用程序来管理Chrome日志。


我似乎找不到日志文件。你知道它在哪里吗?我用的是Mac,我已经检查了Chrome.app的包内容。 - Erik Wendel
它应该在~/Library/Application Support/Google/Chrome/Default上,无论如何,请检查http://www.chromium.org/for-testers/enable-logging - Adriano Repetti
在/Library/Application Support下没有Google文件夹,但是这两个文件夹和其他一些子文件夹都在那里。我怀疑我的Chrome参数可能有问题。我是用以下方式打开它的:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-logging --v=1有没有办法查看应用程序是否使用了指定的参数运行? - Erik Wendel
请查看chromium.org/for-testers/enable-logging,它应该包含您设置Chrome所需的所有内容! - Adriano Repetti
1
@ErikWendel,不确定您是否已经找到了解决侧路问题的方法。然而,我正在使用自定义用户目录进行类似操作 - 只是在Windows上,自定义目录的路径为C:\ Users \<user> \ AppData \ Local \ Google \ Chrome \<custom_directory>,我认为在Mac上等效的路径应该是〜/ Library / Application Support / Google / Chrome / <custom_directory> / chrome_debug.log。希望这可以帮助到您。@Adriano,感谢您提供的解决方案/链接。 - Arthur Weborg
显示剩余2条评论

1

使用 console.error(arg); - 它会将控制台消息发送到浏览器的 stderr(我非常确定它在发布版本中也会这样做)。

从命令行启动您的浏览器,并将您的 stderr 重定向到某个文件(类似于 chrome 2>errlog)。


你的意思是说在 --args 后面的参数应该是 2>errlog,这意味着级别为 2(错误)的日志将被记录到 errlog 文件中?你知道这个文件会保存在哪里吗?我在使用 Mac。 - Erik Wendel
2>errlog 的意思是“将 stderr(其句柄为 2)重定向到名为 'errlog' 的文件中”。您可以提供任何文件名(包括完整路径)。 - Alexander Pavlov
1
我指定了一个完整的路径,在重新启动Chrome后,文件被创建了,这是一个好兆头。然而,在执行一些console.error(args)之后,它并没有添加到文本文件中,尽管以红色文本向我显示了参数。文本文件中唯一的一行是以下内容: [0418/164110:INFO:breakpad_mac.mm(148)] Breakpad disabled这是我的AppleScript脚本,用于打开带有参数的Chrome: do shell script "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-logging --v=1 2>/Users/myusername/Documents/errlog.txt" - Erik Wendel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接