记录客户方JavaScript错误的服务器上的[封闭]
-
02-07-2019 - |
题
Im运行ASP.NET 站在那里我具有的问题找到一些JavaScript错误只是用手工测试。
是否有可能捕获所有的JavaScript错误的客户方,并记录它们在服务器上即在事件日志(通过服务或类似的东西)?
解决方案
您可以尝试为 onerror事件设置自己的处理程序并使用XMLHttpRequest告诉服务器出了什么问题,但由于它不是任何规范的一部分,支持有点片状。
以下是来自使用XMLHttpRequest记录JavaScript错误:
window.onerror = function(msg, url, line)
{
var req = new XMLHttpRequest();
var params = "msg=" + encodeURIComponent(msg) + '&url=' + encodeURIComponent(url) + "&line=" + line;
req.open("POST", "/scripts/logerror.php");
req.send(params);
};
其他提示
简短的回答: 是的,这是可能的。
再回答: 人们已经写关于你如何能(至少部分)解决这个问题通过编写自己的代码。然而,请注意,有的服务,在那里,似乎已作出肯定的JS码需要的工作在许多浏览器。我发现如下:
- http://trackjs.com
- https://www.atatus.com
- http://jserrlog.appspot.com
- http://muscula.com
- https://sentry.io
- https://rollbar.com
- https://catchjs.com
我不能说的任何这些服务,因为我还没有尝试过。
我刚刚实施的服务器方的错误记录在javascript错误的一个项目的工作。有一种混合物的遗产代码和使用新的编码 jQuery.
我使用一个组合 window.onerror
和包装延事件处理程序和onready的功能有一个错误处理功能(参见: JavaScript错误追踪:为什么窗口。onerror是不够的).
window.onerror
:抓住所有errrors在即(和最错误的火狐),但并没有在野生动物和歌剧院。- jQuery事件处理程序:抓住jQuery事件中的错误所有的浏览器。
- jQuery的准备功能:渔获量的初始化中的错误所有的浏览器。
一旦我有抓错误,我增加了一些额外的属性(url,浏览器等)和然后它回到服务器使用的ajax的呼吁。
在服务器上我有一个小页,只需发表的论据,输出它们以我们的正常服务器记录框架。
我想到开放源代码本(作为一个jQuery插件).如果有人有兴趣让我知道,这将有助于说服的老板!
如果您使用Google Analytics,则可以将javascript错误记录到Google Analytics Events中。
查看此应用: http://siteapps.com/app/log_javascript_errors_with_ga-181
希望它有所帮助。
我还建议使用 TraceTool 实用程序,它附带JavaScript支持,对JS监控非常方便。
如果您想将客户端错误记录回服务器,那么您将不得不进行某种服务器处理。最好的办法是拥有一个可以通过JavaScript(AJAX)访问的Web服务,并将错误日志信息传递给它。
如果问题出在托管Web服务的网络服务器上你遇到了麻烦,那么100%是不是100%解决问题,你可以通过查询字符串通过标准页面发送信息,一种方法是通过动态生成Image标签(然后将其删除),因为浏览器将尝试加载图像源。它很好地解决了跨域JavaScript调用问题。请记住,如果某人关闭了图片,您就会遇到麻烦;)
我最近一直在使用 Appfail ,它可以捕获asp.net和JavaScript错误
您可以通过try / catch对服务器进行Ajax调用,但这可能是您可以做的最好的。
我可以建议使用JavaScript单元测试吗?可能使用 JSUnit ?