我计划启动一个我正在开发的Web应用程序的内测版,并且我想要一种方法来轻松地从测试人员那里收集控制台日志数据。对于他们来说,“轻松”意味着轻松,因为他们中的大多数技术人员不足以打开控制台并复制/粘贴信息和错误。有什么方法可以收集这些信息,包括所有log/info/warn/error语句和堆栈跟踪?任何方式来收集测试者的控制台日志?
编辑:我应该澄清,它主要是我担心的未处理的异常,所以重写console.error
将不会执行任何操作,因为该函数没有被调用。
我计划启动一个我正在开发的Web应用程序的内测版,并且我想要一种方法来轻松地从测试人员那里收集控制台日志数据。对于他们来说,“轻松”意味着轻松,因为他们中的大多数技术人员不足以打开控制台并复制/粘贴信息和错误。有什么方法可以收集这些信息,包括所有log/info/warn/error语句和堆栈跟踪?任何方式来收集测试者的控制台日志?
编辑:我应该澄清,它主要是我担心的未处理的异常,所以重写console.error
将不会执行任何操作,因为该函数没有被调用。
更新
编辑完你的问题说,你想要的是记录的错误,所以,你必须使用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。 – ffxsam
查看一个支持日志记录到数据库的日志记录库,或者制作一些日志记录功能,它们会在出现log/info/warn/error时执行ajax post。使帖子包含简单的信息,如时间戳,用户和控制台输出。在后端有记录所有的信息。这将是用户最简单的方式。
不久前,我偶然发现了一个同样的问题,为学生的webapp。
请看看我的答案为“获取控制台历史记录”: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));
});
有人告诉我一个非常酷的错误日志记录服务,名为Rollbar,它实际上会自动记录未处理的异常。我现在使用它,这是一个巨大的帮助!
http://stackoverflow.com/questions/11403107/capturing-javascript-console-log –
@RickS看到我上面的编辑。我不打电话给'console.log'或'console.error' – ffxsam
window.error怎么办? https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror –