如何将console.log(对象)的输出保存到文件?

Edu*_*scu 213 javascript json google-chrome

我尝试过使用JSON.stringify(object),但它不会影响整个结构和层次结构.

另一方面,console.log(object)这样做,但我无法保存.

console.log输出中,我可以逐个扩展所有的孩子并选择和复制/粘贴,但结构是大的.

Pat*_*ick 281

更新: 您现在可以右键单击

右键单击"控制台"面板中的"另存为",将记录的消息保存到文件中.

原答案:

您可以使用下面显示的devtools代码段来创建console.save方法.它从输入创建一个FileBlob,然后自动下载它.

(function(console){

console.save = function(data, filename){

    if(!data) {
        console.error('Console.save: No data')
        return;
    }

    if(!filename) filename = 'console.json'

    if(typeof data === "object"){
        data = JSON.stringify(data, undefined, 4)
    }

    var blob = new Blob([data], {type: 'text/json'}),
        e    = document.createEvent('MouseEvents'),
        a    = document.createElement('a')

    a.download = filename
    a.href = window.URL.createObjectURL(blob)
    a.dataset.downloadurl =  ['text/json', a.download, a.href].join(':')
    e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
    a.dispatchEvent(e)
 }
})(console)
Run Code Online (Sandbox Code Playgroud)

资料来源:http://bgrins.github.io/devtools-snippets/#console-save

  • 保存为...功能实际上没有帮助.它没有保存完整的JSON对象(在我的例子中,我有一个对象数组,对象属性没有在输出文件中导出).但是,希望你粘贴的好旧的devtool-snippet就像一个魅力.谢谢 (12认同)
  • 右键单击不会执行对象的深度保存. (10认同)
  • 不起作用 我只得到“存储为局部变量” (3认同)
  • 我不是那些在任何地方放弃"谢谢"的人,直到答案被阻止以防止"谢谢".但是谢谢.要建立一个扩展. (2认同)

Bl1*_*zak 204

如果您记录了一个对象:

  • 右键单击控制台中的对象,然后单击 Store as a global variable
  • 输出将是这样的 temp1
  • 键入控制台 copy(temp1)
  • 粘贴到您喜欢的文本编辑器

  • 我只得到[对象] (3认同)
  • 控制台显示“未定义”,但这并不意味着失败。它仍然将其复制到剪贴板:) (3认同)
  • 我还发现将其粘贴到 https://konklone.io/json/ 然后您可以快速将其放入 CSV 文件并从那里放入 Excel。 (2认同)
  • 迄今为止最简单、最可靠的解决方案! (2认同)

小智 123

您可以使用Chrome DevTools Utilities API copy()命令将指定对象的字符串表示形式复制到剪贴板.

如果你有很多对象,那么你实际上可以JSON.stringify()你所有的对象,并继续将它们附加到一个字符串.现在使用copy()方法将完整的字符串复制到剪贴板.

  • 用法:复制(对象) (11认同)
  • 如果键入copy(object)并返回“ undefined”,则实际上是成功的。该对象现在位于剪贴板中,可以粘贴。 (2认同)

ino*_*nik 7

有一个开源的javascript插件就是这样 - debugout.js

Debugout.js记录并保存console.logs,以便您的应用程序可以访问它们.完全披露,我写了.它适当地格式化不同的类型,可以处理嵌套对象和数组,并且可以选择在每个日志旁边放置一个时间戳.它还可以在一个地方切换实时记录.


Ada*_*Hey 5

这对聚会来说确实很晚了,但也许会对某人有所帮助。我的解决方案似乎与 OP 描述的有问题的内容类似,但也许这是 Chrome 现在提供的功能,但当时不提供。\n我尝试在对象写入控制台后右键单击并保存 .log 文件,但是给我的只是一个文本文件:

\n\n
\n

console.js:230完成:数组(50000)[0 \xe2\x80\xa6 9999][10000 \xe2\x80\xa6 19999][20000 \xe2\x80\xa6\n 29999][30000 \xe2\x80\ xa6 39999][40000 \xe2\x80\xa6 49999]长度:50000__proto__:数组(0)

\n
\n\n

这对任何人都没有用。

\n\n

我最终做的是console.log(data)在代码中找到 ,在其上放置一个断点,然后JSON.Stringify(data)在控制台中键入,该控制台将整个对象显示为 JSON 字符串,并且 Chrome 控制台实际上为您提供了一个复制它的按钮。然后粘贴到文本编辑器中,这就是您的 JSON

\n\n

在此输入图像描述

\n