2010-08-11 63 views
9

有什么方法可以导出记录到Google Chrome浏览器的javascript控制台的消息吗?从Google Chrome浏览器导出Javascript控制台日志

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

回答

17

第1步:添加了一堆的console.log报表,这将有助于诊断您的问题

第2步:添加逻辑重新定义您的客户端系统上的console.log因此,它实际上节省了它的参数窗口.log(或其他),而不是实际将它们记录到控制台。

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

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

步骤4中的一个:利润! ;-)

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

+0

附:并非所有浏览器都支持onUnload;如果你的客户没有,你可能会想要在每个console.log上触发AJAX调用(或者使用window.setInterval频繁地“轮询”window.log)。 – machineghost 2010-08-11 20:55:41

+0

有趣和棘手..但看起来很复杂! (特别是第3步)没有更简单的方法来做到这一点..? – Dexter 2010-08-11 20:58:57

+0

这真的很简单,但只是试图表明我已经添加了第二个答案。 – machineghost 2010-08-11 21:52:04

1

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

  • 设置log4javascript使用AjaxAppender发送日志信息到服务器(见quick start guide,接近底部)
  • 添加日志记录调用你的JavaScript
  • 收集服务器上的日志消息使用你选择的技术
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)"); 
1

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

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

  • 跨浏览器UI少更换的console.log的 - 在客户端。
  • 日志存储系统 - 在服务器端。

Demo

相关问题