从Google Chrome导出Javascript控制台日志

时间:2010-08-11 20:42:41

标签: javascript debugging google-chrome

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

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

4 个答案:

答案 0 :(得分:17)

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

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

window.log = []
console = console || {"log":function(x) {window.log.push(x);}}

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

第4步:获利! ; - )

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

答案 1 :(得分: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

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

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

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

答案 2 :(得分:1)

您可以使用我的JavaScript日志记录库log4javascript。你需要:

  • 设置log4javascript以使用AjaxAppender将日志消息发送到服务器(请参阅底部附近的quick start guide
  • 向JavaScript添加日志记录调用
  • 使用您选择的技术在服务器上收集日志消息

答案 3 :(得分:1)

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

  

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

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

Demo