Export Javascript Console log from Google Chrome

Dex*_*ter 9 javascript debugging google-chrome

有没有办法导出记录到谷歌浏览器的javascript控制台的消息?

如果没有,有人能建议一个很好的方法来诊断客户端机器上的JavaScript问题吗?尽管建立了相同的环境,但我无法在本地复制问题.

mac*_*ost 17

第1步:添加一堆有助于诊断问题的console.log语句

步骤2:添加逻辑以在客户端系统上重新定义console.log,以便它实际将其参数保存到window.log(或其他),而不是实际将它们记录到控制台.

window.log = []
console = console || {"log":function(x) {window.log.push(x);}}
Run Code Online (Sandbox Code Playgroud)

步骤3:添加一个onUnload处理程序,该处理程序将一个AJAX请求激发到您的服务器,其中window.log的内容作为其参数之一

第4步:获利!;-)

这个系统的一个额外好处是(一旦你设置好了)你就可以不加区别地使用console.log,无论你是在你的开发环境还是你的实时环境中,它都会做正确的事情.


mac*_*ost 7

这是我之前答案的略短/简单版本.为了简单起见,我们只需对每个日志进行AJAX调用,为了让事情变得更加容易,我们将使用jQuery来完成"繁重的工作".(如果你使用jQuery之外的JS库,它应该有某种类似的方法;如果没有,或者如果你没有使用JS库......时间认真考虑jQuery!)哦,我们会抛出在一些服务器端伪代码中,以证明方程的这一部分是多么容易.

第1步:添加一堆有助于诊断问题的console.log语句

步骤2:添加逻辑以在客户端系统上重新定义console.log,以便在没有控制台的情况下将日志发送到服务器

var SERVER_URL = "www.yourServer.com/ajaxLogger.jsp";
var ajaxConsole = {"log":function(x) {
    $.get(SERVER_URL, {"log":x});
}}
console = console || ajaxConsole; // If there is no console, use the AJAX one
Run Code Online (Sandbox Code Playgroud)

第3步:在服务器上创建日志记录页面

以下示例使用伪代码,因为每个人都有不同的服务器端语言:

String log = pageParameters["log"];
Database.execute("INSERT INTO yourLogTable (log, date) VALUES ('" +
        dbEscape(log) +"', current date)");
Run Code Online (Sandbox Code Playgroud)