Answers:
我需要做同样的事情,这是我发现的解决方案:
使用以下标志从命令行启用日志记录:
--enable-logging --v=1
这会记录Chrome内部执行的所有操作,但也会记录所有console.log()
消息。日志文件被调用chrome_debug.log
并位于中User Data Directory
。
使用过滤您获取的日志文件行CONSOLE(\d+)
。
请注意,控制台日志不会显示为--incognito
。
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-logging --v=1
日志保存在~/Library/Application Support/Google/Chrome/chrome_debug.log
console.log()
台词不在那个文件中。有人为此解决吗?
{a: 1, b: 2, c: 3, ...}
。
有一个开源的javascript插件可以做到这一点,但是对于任何浏览器-debugout.js
Debugout.js记录并保存console.logs,以便您的应用程序可以访问它们。完全披露,是我写的。它可以适当地设置不同类型的格式,可以处理嵌套的对象和数组,还可以选择在每个日志旁边放置一个时间戳。您也可以在一个位置切换实时日志记录,而不必删除所有日志记录语句。
我已经找到了一种简便的方法。
在控制台中-右键单击控制台记录的对象
点击“存储为全局变量”
查看新变量的名称-例如,它是variableName1
在控制台中输入:JSON.stringify(variableName1)
复制变量字符串的内容:例如{“ a”:1,“ b”:2,“ c”:3}
这可能有帮助,也可能没有帮助,但在Windows上,您可以使用Windows事件跟踪功能读取控制台日志
http://msdn.microsoft.com/en-us/library/ms751538.aspx
我们的集成测试在.NET中运行,因此我使用此方法将控制台日志添加到我们的测试输出中。我已经制作了一个示例控制台项目以在此处进行演示:https : //github.com/jkells/chrome-trace
--enable-logging --v = 1似乎不适用于最新版本的Chrome。
很多好的答案,但是为什么不只使用JSON.stringify(your_variable)?然后通过复制粘贴内容(删除外部引号)。我也在以下位置发布了相同的答案:如何将console.log(object)的输出保存到文件?
还有另一个开源工具,它允许您将所有console.log
输出保存在服务器上的文件中-JS LogFlush(插件!)。
JS LogFlush是集成的JavaScript日志记录解决方案,其中包括:
- 跨浏览器的无UI替换console.log-在客户端。
- 日志存储系统-在服务器端。
如果要在本地主机上运行Apache服务器(不要在生产服务器上执行此操作),则还可以将结果发布到脚本中,而不是将其写入控制台。
因此,除了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);
如今,这非常容易-右键单击控制台日志中显示的任何项目,然后选择另存为并将整个日志输出保存到计算机上的文件中。
该线程中的其他解决方案不适用于我的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
应的数据追加到一个日志文件的地方。我不需要那部分,因此不在这里包括。:)