2012-08-07 114 views
151

我尝试过使用JSON.stringify(object),但它并没有在整个结构和层次上下降。如何将console.log(对象)的输出保存到文件中?

另一方面console.log(object)这样做,但我不能保存它。

console.log输出中,我可以一个接一个地展开所有的孩子,然后选择并复制/粘贴,但是结构对于那个很大。

+1

Duplicate:http://stackoverflow.com/questions/7627113/save-the-console-log-in-chrome-to-a-file http://stackoverflow.com/questions/3462648/export-javascript -console-log-from-google-chrome – MichaelS 2012-08-07 15:55:30

+0

您是否试图从浏览器保存console.log用于开发目的?如果你解释你的最终目标是什么,这可能会有所帮助。 – travis 2012-08-07 15:57:34

+0

@MichaelS我没有在日志文件中找到对象。 – 2012-08-07 16:01:09

回答

230

更新: You can now just right click

Right click > Save as in the Console panel to save the logged messages to a file.

原来的答案:

您可以使用此代码段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) 

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

+1

@帕特里克你真是个好人。很棒! – 2015-01-20 07:35:34

+0

不起作用。我只拿到“Store as local variable” – CodyBugstein 2015-04-22 17:02:47

+0

更加努力,Imray。绝对有效。 – Patrick 2015-04-23 00:29:04

92

您可以使用“Chrome开发者工具”命令行API“copy()”将指定对象的字符串表示形式复制到剪贴板。

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

+7

太棒了,谢谢! – 2014-07-20 22:21:42

+8

用法:copy(object) – antoine 2015-02-05 19:10:43

+4

比已接受的答案更有用 – korsun 2016-08-27 23:22:44

4

有一个开源的JavaScript插件,做到了这一点 - debugout.js

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

1

还有另一个开源工具,允许您将所有console.log输出保存在服务器上的文件中 - JS LogFlush(plug!)。

JS LogFlush is an integrated JavaScript logging solution which include:

  • cross-browser UI-less replacement of console.log - on client side.
  • log storage system - on server side.

Demo

3

右键点击控制台,也可以点击另存为...它的这个简单的..你会得到一个输出的文本文件

+0

不是很好的输出我必须添加 – 2016-07-24 02:51:59

80

如果你有记录的对象:

  • 右键点击控制台中的对象,然后单击Store as a global variable
  • 输出会像temp1
  • 类型在控制台copy(temp1)
  • 粘贴到文本编辑器
+4

这是实际工作的唯一答案! – Geo 2016-11-02 18:51:27

+0

无法获得可接受的解决方案......尽管如此,这项工作仍然完美。 – asdf 2016-12-12 13:27:17

+0

这是最简单的方法。 – lengxuehx 2016-12-18 03:37:56

0

很多很好的答案,但为什么不只是使用JSON.stringify(your_variable)?然后通过复制并粘贴内容(删除外部引号)。

+0

有关*“** Uncaught TypeError:将圆形结构转换为JSON **”*的问题,或许[this](https://stackoverflow.com/questions/41032565/how-to -copy-the-objects-from-chrome-console-window)可以提供帮助。 – KtX2SkD 2017-10-08 14:23:52