[英]Error-logging for javascript on client side
我的项目包含很多带有表单的页面。 这是银行CRM系统的后端,因此可以捕获和调查工作过程中的任何错误。 在服务器端,我们有增强的java异常系统,但是如果在客户端发生错误 - javascript我们现在获得的唯一信息是IE中的js-error窗口,或者有时是高级用户制作的页面截图。
Javascript代码包含Jquery支持的UI扩展和硬编码的内联事件处理程序和函数。
所以我问是否可以使用任何捕获任何类型的js-errors的方法? 一些额外的库或某些东西可以给我一个像Mozilla中的firebug或Chrome中的web控制台的堆栈跟踪?
查看window.onerror
。 如果您想捕获任何错误并将它们报告给服务器,那么您可以尝试使用AJAX请求。
window.onerror = function(errorMessage, errorUrl, errorLine) {
jQuery.ajax({
type: 'POST',
url: 'jserror.jsf',
data: {
msg: errorMessage,
url: errorUrl,
line: errorLine
},
success: function() {
if (console && console.log) {
console.log('JS error report successful.');
}
},
error: function() {
if (console && console.error) {
console.error('JS error report submission failed!');
}
}
});
// Prevent firing of default error handler.
return true;
}
免责声明:我是Sentry的首席执行官和创始人,这是一种开源和付费服务,可以为许多语言(包括Javascript)进行崩溃报告。
捕获前端异常可能非常具有挑战性。 技术已经变得更好(浏览器JS引擎),但仍有很多局限性。
window.onerror
(主要是因为浏览器历史上在这里提供了不好的信息)。 我们在raven.js客户端(基于TraceKit)中所做的是修补许多函数来将它们包装在try / catch语句中。 例如, window.setTimeout
。 有了这个,我们就可以安装错误处理程序,在大多数浏览器中生成完整的堆栈跟踪。 您应该在服务器上注意的一些事项:
http://exceptionhub.com应该诀窍。 http://errorception.com/不提供调试信息,但也很好看。
proxino似乎不知道他们在做什么,他们在他们的记录器代码中包含一个完整的jQuery来记录我上次检查时的错误事件。 我不相信一个对客户端JavaScript很少掌握的服务来记录我的JavaScript错误。
我建议使用JsLog.me服务
除了错误和堆栈跟踪之外,它还可以捕获整个控制台输出。 我们在项目中使用它,记录整个控制台日志有助于我们的QA团队记录问题再现方式。 此外,它适用于Chrome控制台中的大型JSON对象,并且具有搜索功能。
如果您的网站使用的是Google Analytics,您可以执行以下操作:
window.onerror = function(message, source, lineno, colno, error) {
if (error) message = error.stack;
ga('send', 'event', 'window.onerror', message, navigator.userAgent);
}
关于上面代码的一些评论:
代码到位后,您就可以查看用户的Javascript错误:
Behavior
部分,然后点击“ Top Events
报告。 window.onerror
。 Secondary dimension
按钮并在显示的文本框中输入“ Event Label
,为用户的操作系统/浏览器版本添加一列报告。 Atatus捕获JavaScript错误并捕获错误之前的用户操作。 这有助于更好地理解错误。 Atatus帮助您监控前端,不仅仅是出错,还有其性能(真实用户监控)
免责声明:我是Atatus的网络开发人员。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.