我计划推出一个我正在处理的网络应用的封闭测试版,我想要一种从测试人员轻松收集控制台日志数据的方法。通过"轻松"我的意思是他们很容易,因为他们中的大多数人都没有足够的技术来打开控制台并复制/粘贴信息和错误。有什么方法可以收集它,包括所有log / info / warn / error语句和堆栈跟踪?
编辑:我应该澄清一下,它主要是我担心的未处理的例外情况,因此覆盖console.error
将无效,因为该函数未被调用。
答案 0 :(得分:3)
<强>更新强>
您已编辑了问题,说明您想要的是记录错误,因此,您必须使用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
功能,您可以随意执行任何操作。
答案 1 :(得分:0)
查看一个支持记录到数据库的日志记录库,或者创建一些记录函数,这些函数将在出现日志/信息/警告/错误的情况下执行ajax发布。使帖子包含时间戳,用户和控制台输出等简单信息。在后端有记录所有信息。这对用户来说是最简单的方式。
答案 2 :(得分:0)
我不久前偶然发现了同样的问题,为学生提供了一个webapp。
请在“获取控制台历史记录”中查看我的回答:Reference Source
基本上,我编写了一个简单的库来捕获所有console.history
调用,并将它们作为数组存储在console.history
中。
该库可在GitHub上获得,其中包含更多示例和文档:https://stackoverflow.com/a/40126638/1878974
因此,使用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));
});
,您可以 - 使用@ Buzinas的答案 - 轻松地将完整的控制台历史记录发送到您的服务器或存储解决方案:
{{1}}
答案 3 :(得分:0)
有人告诉我一个名为Rollbar的非常酷的错误记录服务,它实际上会自动记录未处理的异常。我现在正在使用它,这是一个巨大的帮助!