有没有办法导出谷歌浏览器中记录到javascript控制台的消息?
如果没有,有人能建议一个很好的方法来诊断客户端机器上的JavaScript问题吗?尽管建立了相同的环境,但我无法在本地复制问题。
答案 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。你需要:
答案 3 :(得分:1)
有一个开源工具,可以将所有console.log
输出保存在服务器上的文件中 - JS LogFlush(插件!)。
JS LogFlush 是一个集成的JavaScript日志记录解决方案,包括:
- 在客户端进行跨浏览器无UI替换console.log。
- 日志存储系统 - 在服务器端。