将Chrome中的console.log保存到文件中

时间:2011-10-02 15:02:30

标签: google-chrome console logging

有谁知道将Chrome中的console.log输出保存到文件的方法?或者如何将文本复制出控制台?

假设您正在运行几个小时的功能测试,并且您在Chrome中有数千行console.log输出。你如何保存或导出它?

14 个答案:

答案 0 :(得分:165)

好消息

Chrome开发工具现在允许您将控制台输出本地保存到文件

  1. 打开控制台
  2. 右击
  3. 选择“另存为...”
  4. save console to file

    Chrome开发人员说明here

答案 1 :(得分:87)

我需要做同样的事情,这是我找到的解决方案:

  1. 使用flags:

    从命令行启用logging

    --enable-logging --v=1

    这会记录Chrome内部执行的所有操作,但它也会记录所有console.log()消息。该日志文件名为 chrome_debug.log ,位于User Data Directory

  2. 使用CONSOLE(\d+)过滤日志文件。

  3. 请注意,控制台日志不会显示--incognito

答案 2 :(得分:24)

有一个开源的javascript插件可以做到这一点,但对于任何浏览器 - debugout.js

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

答案 3 :(得分:10)

我找到了一个很好的方法。

  1. 在控制台中 - 右键单击​​控制台记录对象

  2. 点击'存储为全局变量'

  3. 查看新变量的名称 - 例如它是variableName1

  4. 键入控制台:JSON.stringify(variableName1)

  5. 复制变量字符串内容:例如{"":1," B":2" C":3}

  6. enter image description here

    1. 转到一些JSON在线编辑器: 例如https://jsoneditoronline.org/
    2. enter image description here

答案 4 :(得分:6)

这可能有用,也可能没用,但在Windows上,您可以使用Windows事件跟踪读取控制台日志

http://msdn.microsoft.com/en-us/library/ms751538.aspx

我们的集成测试在.NET中运行,因此我使用此方法将控制台日志添加到测试输出中。我已经制作了一个示例控制台项目来演示:https://github.com/jkells/chrome-trace

- enable-logging --v = 1似乎无法在最新版本的Chrome上运行。

答案 5 :(得分:6)

要获得更好的日志文件(不使用Chrome-debug废话),请使用:

--enable-logging --log-level=0
而不是 --v=1这是太多的信息。

它仍会提供您通常会在Chrome控制台中看到的错误和警告。

答案 6 :(得分:2)

答案 7 :(得分:2)

对于Google Chrome 84.0.4147.105及更高版本,

右键单击并单击“另存为”和“保存”

然后,将保存txt文件

enter image description here

答案 8 :(得分:1)

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

  

JS LogFlush 是一个集成的JavaScript日志记录解决方案,包括:

     
      
  • 在客户端进行跨浏览器无UI替换console.log。
  •   
  • 日志存储系统 - 在服务器端。
  •   

Demo

答案 9 :(得分:1)

如果您在本地主机上运行Apache服务器(不要在生产服务器上执行此操作),您也可以将结果发布到脚本而不是编写脚本控制台。

因此,您可以写下:{/ p>而不是console.log

JSONP('http://localhost/save.php', {fn: 'filename.txt', data: json});

然后save.php可以执行此操作

<?php

 $fn = $_REQUEST['fn'];
 $data = $_REQUEST['data'];

 file_put_contents("path/$fn", $data);

答案 10 :(得分:1)

(至少)在Linux上,您可以在环境中设置CHROME_LOG_FILE,以让chrome每次运行时都将Console活动的日志写入命名文件。每次Chrome启动时,日志都会被覆盖。这样,如果您有一个运行chrome的自动会话,则无需更改chrome的启动方式,并且会话结束后便会保存日志。

导出CHROME_LOG_FILE = chrome.log

答案 11 :(得分:0)

这几天非常简单-右键单击控制台日志中显示的任何项目,然后选择“另存为”并将整个日志输出保存到计算机上的文件中。

答案 12 :(得分:0)

此线程中的其他解决方案不适用于我的Mac。这是一个使用ajax间歇性保存字符串表示形式的记录器。与console.save而非console.log一起使用

var logFileString="";
var maxLogLength=1024*128;

console.save=function(){
  var logArgs={};

  for(var i=0; i<arguments.length; i++) logArgs['arg'+i]=arguments[i];
  console.log(logArgs);

  // keep a string representation of every log
  logFileString+=JSON.stringify(logArgs,null,2)+'\n';

  // save the string representation when it gets big
  if(logFileString.length>maxLogLength){
    // send a copy in case race conditions change it mid-save
    saveLog(logFileString);
    logFileString="";
  }
};

根据需要,可以保存该字符串,也可以仅console.log并复制并粘贴。这是为您准备的ajax,以备您保存:

function saveLog(data){
  // do some ajax stuff with data.
  var xhttp = new XMLHttpRequest();

  xhttp.onreadystatechange = function(){
    if (this.readyState == 4 && this.status == 200) {}
  }

  xhttp.open("POST", 'saveLog.php', true);
  xhttp.send(data);
}

saveLog.php应该将数据附加到某个地方的日志文件中。我不需要那部分,所以这里不包括它。 :)

https://www.google.com/search?q=php+append+to+log

答案 13 :(得分:0)

  1. 直接右键单击要复制的记录值
  2. 在右键菜单中,选择“存储为全局变量”
  3. 您会在控制台的下一行看到保存为“temp1”之类的值
  4. 在控制台中,输入 **/** filter=lfs diff=lfs merge=lfs -text **/*.json filter= diff= merge= text **/*.csv filter= diff= merge= text 并按回车键(将 copy(temp1) 替换为上一步中的变量名称)。现在记录的值被复制到您的剪贴板。
  5. 将值粘贴到您想要的任何位置

如果您不想在 Chrome 中更改标志/设置并且不想处理 JSON 字符串化和解析等,那么这是一种特别好的方法。

更新:我刚刚找到了对我的建议的解释,这些图片更易于理解https://scottwhittaker.net/chrome-devtools/2016/02/29/chrome-devtools-copy-object.html