【问题标题】:Export Javascript Console log from Google Chrome从 Google Chrome 导出 Javascript 控制台日志
【发布时间】:2011-03-28 14:51:53
【问题描述】:

有没有办法将记录到 Google Chrome 中的 javascript 控制台的消息导出?

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

【问题讨论】:

    标签: javascript debugging google-chrome


    【解决方案1】:

    第 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,无论你是在你的开发环境还是你的实际环境中,它都会做正确的事情。

    【讨论】:

    • P.S.并非所有浏览器都支持 onUnload;如果您的客户不这样做,您可能希望改为在每个 console.log 上触发 AJAX 调用(或者使用 window.setInterval 频繁“轮询”window.log)。
    • 有趣又棘手..但看起来很复杂! (特别是第 3 步)难道没有更简单的方法可以做到这一点吗?
    • 这真的很简单,但只是为了证明我已经添加了第二个答案。
    • 我还建议根本不调用 console.log 而是创建一个包装器,例如 function vomitDebug(msg) {...} - 更容易扩展,并且客户端实际上有 console.log 的问题消失了。
    • 甜蜜。正是我要找的东西。
    【解决方案2】:

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

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

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

    Demo

    【讨论】:

      【解决方案3】:

      这是我之前回答的稍微短一些/更简单的版本。为了让事情变得简单,我们只需在每个日志上进行 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)");
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2023-03-07
          • 2013-08-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多