【问题标题】:Any way to collect beta testers' console logs?有什么方法可以收集 beta 测试人员的控制台日志?
【发布时间】:2015-12-15 23:15:25
【问题描述】:

我计划推出我正在开发的网络应用程序的封闭测试版,并且我想要一种方法来轻松地从测试人员那里收集控制台日志数据。 “容易”是指对他们来说容易,因为他们中的大多数人的技术不足以打开控制台并复制/粘贴信息和错误。有什么方法可以收集这些信息,包括所有日志/信息/警告/错误语句和堆栈跟踪?

编辑:我应该澄清一下,我担心的主要是未处理的异常,因此覆盖 console.error 将无济于事,因为没有调用该函数。

【问题讨论】:

标签: javascript google-chrome firefox google-chrome-devtools


【解决方案1】:

更新

您已经编辑了您的问题,说您想要记录错误,因此,您必须使用onerror 事件,该事件在window 对象中可用。

window.addEventListener('error', function(e) {
  // log whatever you want here
});

你可以在你的 Javascript 中做类似的事情:

console.print = console.log;
console.log = function() {
  console.print(arguments);

  // collect your data here, for example, sending a XHR
  var params = "values=" + encodeURIComponent(JSON.stringify(arguments));
  var xhr = new XMLHttpRequest();
  xhr.open('POST', '/log-data');
  xhr.send(params);
}

您覆盖console.log 功能,您可以在那里做任何您想做的事情。

【讨论】:

  • 完美。 e 也包含我需要的所有详细信息,例如行号、错误消息、URL。
【解决方案2】:

查看一个支持日志记录到数据库的日志库,或者制作一些日志记录函数,这些函数将在出现日志/信息/警告/错误时进行 ajax 发布。使帖子包含简单的信息,例如时间戳、用户和控制台输出。在后端让它记录所有信息。这对用户来说是最简单的方法。

【讨论】:

  • 当然,日志库可以工作,但在我没有计划的未处理异常的情况下(或者无法控制它是否在第三方库中)。跨度>
  • @ffxsam 您可以覆盖console.log 以写入数据库,您也可以捕获window.onerror 并将其记录到数据库。
  • 覆盖 console.logconsole.error 将无济于事。未处理的异常不使用这些函数。尝试覆盖这些函数,然后执行throw Error('ouch') 看看我的意思。
  • @ffxsam 正如我所说,还要处理window.onerror,它将捕获此类内容。见developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/…
  • @dman2306 喜欢这个? window.onerror = function () { console.log('override worked'); }
【解决方案3】:

不久前我偶然发现了一个针对学生的网络应用程序的相同问题。

请查看我在“获取控制台历史记录”中的回答:https://stackoverflow.com/a/40126638/1878974

基本上,我编写了一个简单的库来捕获所有console[log/info/warn/err/debug] 调用并将它们作为数组存储在console.history 中。

该库在 GitHub 上提供,还有更多示例和文档:https://git.io/console

因此,使用 console.history,您可以 - 使用 @Buzinas 的答案 - 轻松地将完整的控制台历史记录发布到您的服务器或存储解决方案:

window.addEventListener('error', function(e) {

  // POST request to server
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.open("POST", "/log-data");
  xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
  xmlhttp.send(JSON.stringify(console.history));

});

【讨论】:

    【解决方案4】:

    有人告诉我一个名为Rollbar 的非常酷的错误记录服务,它实际上会自动记录未处理的异常。我现在正在使用它,它有很大的帮助!

    【讨论】:

      猜你喜欢
      • 2017-03-05
      • 2023-03-24
      • 2019-05-20
      • 2018-10-28
      • 1970-01-01
      • 2020-12-28
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多