有没有办法将在Google Chrome中记录到的JavaScript控制台消息导出?
如果没有,是否有人能够建议一种好的方法来诊断客户端计算机上的JavaScript问题?尽管我已经设置了完全相同的环境,但我仍然无法在本地复现这些问题。
有没有办法将在Google Chrome中记录到的JavaScript控制台消息导出?
如果没有,是否有人能够建议一种好的方法来诊断客户端计算机上的JavaScript问题?尽管我已经设置了完全相同的环境,但我仍然无法在本地复现这些问题。
步骤1:添加一些console.log语句来帮助诊断您的问题。
步骤2:在客户端系统上添加逻辑来重新定义console.log,使其实际将其参数保存到window.log(或其他名称)而不是将它们记录到控制台。
window.log = []
console = console || {"log":function(x) {window.log.push(x);}}
第三步:添加一个onUnload处理程序,通过AJAX请求将window.log的内容作为其参数之一发送到您的服务器
第四步:赚钱!;-)
这个系统的另一个额外好处是(一旦设置好),您可以随意使用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
String log = pageParameters["log"];
Database.execute("INSERT INTO yourLogTable (log, date) VALUES ('" +
dbEscape(log) +"', current date)");
有一个开源工具可以让你将所有console.log
输出保存在服务器上的文件中 - JS LogFlush(插件!)。
JS LogFlush是一个集成的JavaScript日志记录解决方案,包括:
- 客户端跨浏览器无UI替代console.log。
- 服务器端日志存储系统。
function vomitDebug(msg) {...}
- 更容易扩展,并且客户端实际上有console.log的问题将消失。 - Joel Peltonenconsole.log(1, 2, 3);
只将1
放入window.log
。 - Константин Ван