有谁知道将Chrome中的console.log输出保存到文件的方法?或者如何将文本复制出控制台?
假设您正在运行几个小时的功能测试,并且您在Chrome中有数千行console.log输出。你如何保存或导出它?
答案 0 :(得分:165)
答案 1 :(得分:87)
我需要做同样的事情,这是我找到的解决方案:
使用flags:
从命令行启用logging --enable-logging --v=1
这会记录Chrome内部执行的所有操作,但它也会记录所有console.log()
消息。该日志文件名为 chrome_debug.log
,位于User Data Directory
。
使用CONSOLE(\d+)
过滤日志文件。
请注意,控制台日志不会显示--incognito
。
答案 2 :(得分:24)
有一个开源的javascript插件可以做到这一点,但对于任何浏览器 - debugout.js
Debugout.js记录并保存console.logs,以便您的应用程序可以访问它们。完全披露,我写了。它适当地格式化不同的类型,可以处理嵌套对象和数组,并且可以选择在每个日志旁边放置一个时间戳。您还可以在一个位置切换实时日志记录,而无需删除所有日志记录语句。
答案 3 :(得分:10)
我找到了一个很好的方法。
在控制台中 - 右键单击控制台记录对象
点击'存储为全局变量'
查看新变量的名称 - 例如它是variableName1
键入控制台:JSON.stringify(variableName1)
复制变量字符串内容:例如{"":1," B":2" C":3}
答案 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)
A lot of good answers but why not just use JSON.stringify(your_variable) ? Then take the contents via copy and paste (remove outer quotes). I posted this same answer also at: How to save the output of a console.log(object) to a file?
答案 7 :(得分:2)
答案 8 :(得分:1)
还有另一个开源工具,可以将所有console.log
输出保存在服务器上的文件中 - JS LogFlush(插件!)。
JS LogFlush 是一个集成的JavaScript日志记录解决方案,包括:
- 在客户端进行跨浏览器无UI替换console.log。
- 日志存储系统 - 在服务器端。
答案 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
应该将数据附加到某个地方的日志文件中。我不需要那部分,所以这里不包括它。 :)
答案 13 :(得分:0)
**/** filter=lfs diff=lfs merge=lfs -text
**/*.json filter= diff= merge= text
**/*.csv filter= diff= merge= text
并按回车键(将 copy(temp1)
替换为上一步中的变量名称)。现在记录的值被复制到您的剪贴板。如果您不想在 Chrome 中更改标志/设置并且不想处理 JSON 字符串化和解析等,那么这是一种特别好的方法。
更新:我刚刚找到了对我的建议的解释,这些图片更易于理解https://scottwhittaker.net/chrome-devtools/2016/02/29/chrome-devtools-copy-object.html