【问题标题】:Store console logging in Chrome in a persistent way以持久的方式在 Chrome 中存储控制台日志记录
【发布时间】:2012-04-29 21:07:28
【问题描述】:

在一个学校项目中,我正在运行一些通过控制台窗口输入并从那里运行的 javascript。该脚本操作网页并将结果输出到控制台。

问题:以持久的方式保存/保存这些结果,不会在浏览器关闭、脚本故障/页面重新加载或如果可能的话,电脑崩溃时消失。

我曾想过使用 Log4js 或 jStorage (jQuery Storage) 等框架,但由于这不是我要操作的网站,我无法向页面添加代码或标记。

有什么办法吗?

注意:将结果记录到控制台并不重要,如果这样更容易记录,我可以将它们发送到某个地方或用它们做其他事情。

谢谢。

【问题讨论】:

  • Chrome 的控制台日志可以在页面重新加载时保持不变,这是一个内置选项。
  • 谢谢。如果我无法使用磁盘日志记录功能可能会有用
  • 可惜OP从来没有接受过答案

标签: javascript google-chrome logging console persistent


【解决方案1】:

这是一个将日志存储到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);
    });
}());

【讨论】:

    【解决方案2】:

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

    --enable-logging --v=1
    

    它将完整的 chrome 日志保存在其数据目录中(请注意,该文件将在每次运行时被覆盖)。更多详情here.

    替代方法:安装Sawbuck 实用程序来管理 Chrome 日志。

    【讨论】:

    • 谢谢,我去看看!
    • 我似乎找不到日志文件。知道它的位置吗?我在 Mac 上,我检查了 Chrome.app 的包内容。
    • 它应该在 ~/Library/Application Support/Google/Chrome/Default,无论如何检查chromium.org/for-testers/enable-logging
    • /Library/Application Support 下没有 Google 文件夹,但是这两个文件夹与其他一些子文件夹一起存在。我怀疑我的 Chrome 参数可能有问题。我通过以下方式打开它: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-logging --v=1 有没有办法查看应用程序是否使用指定的参数运行?
    • @ErikWendel,不确定您是否找到了解决支线问题的方法。但是,我正在对自定义用户目录做类似的事情——除了在 Windows 上,自定义目录的路径是 C:\Users\<user>\AppData\Local\Google\Chrome\<custom_directory>,我认为 mac 上的等效路径是 ~/Library/Application Support/Google/Chrome/<custom_directory>/chrome_debug.log 希望这会有所帮助。 @Adriano,感谢您的解决方案/链接。
    【解决方案3】:

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

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

    【讨论】:

    • 您的意思是 --args 后面的参数应该是 2>errlog,意思是 2 级(错误)的日志记录到文件 errlog?知道这个文件将保存在哪里吗?我在 Mac 上。
    • 2>errlog 表示“将stderr(句柄为2)重定向到一个名为'errlog'的文件中”。您可以提供任何文件名(包括完整路径)。
    • 我指定了一个完整路径,重启 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"
    猜你喜欢
    • 2012-04-19
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多