【发布时间】:2011-03-28 14:51:53
【问题描述】:
有没有办法将记录到 Google Chrome 中的 javascript 控制台的消息导出?
如果没有,任何人都可以提出一种诊断客户端机器上 javascript 问题的好方法吗?尽管设置了相同的环境,但我无法在本地复制问题。
【问题讨论】:
标签: javascript debugging google-chrome
有没有办法将记录到 Google Chrome 中的 javascript 控制台的消息导出?
如果没有,任何人都可以提出一种诊断客户端机器上 javascript 问题的好方法吗?尽管设置了相同的环境,但我无法在本地复制问题。
【问题讨论】:
标签: javascript debugging google-chrome
第 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,无论你是在你的开发环境还是你的实际环境中,它都会做正确的事情。
【讨论】:
function vomitDebug(msg) {...} - 更容易扩展,并且客户端实际上有 console.log 的问题消失了。
有一个开源工具可让您将所有console.log 输出保存在服务器上的文件中 - JS LogFlush(插入!)。
JS LogFlush 是一个集成的 JavaScript 日志记录解决方案,包括:
- console.log 的跨浏览器 UI 替换 - 在客户端。
- 日志存储系统 - 在服务器端。
【讨论】:
这是我之前回答的稍微短一些/更简单的版本。为了让事情变得简单,我们只需在每个日志上进行 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)");
【讨论】:
您可以使用我的 JavaScript 日志库,log4javascript。您需要:
【讨论】: