在服务器上logging客户端JavaScript错误
我运行一个ASP.NET网站,我有问题,只是手动testingfind一些JavaScript错误。
是否有可能捕捉客户端上的所有JavaScript错误,并将其logging在服务器上,即在EventLog中(通过Web服务或类似的东西)?
您可以尝试为onerror事件设置自己的处理程序,并使用XMLHttpRequest来告诉服务器出了什么问题,但由于它不是任何规范的一部分, 支持有点片面 。
下面是使用XMLHttpRequestloggingJavaScript错误的一个例子:
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); };
简答:是的,这是可能的。
较长的回答:人们已经写了关于如何(至less部分)通过编写自己的代码来解决这个问题。 但是,请注意,那里有服务,似乎已经确保JS代码需要在许多浏览器工作。 我发现了以下内容:
- http://trackjs.com
- https://www.atatus.com
- http://jserrlog.appspot.com
- http://www.exceptionhub.com
- http://muscula.com
我还不能说这些服务,因为我还没有尝试过。 但是,我注意到ExceptionHub似乎有一些彻底的代码 !
我刚刚实现了在工作中的项目上的JavaScript错误的服务器端错误日志logging。 遗留代码和使用jQuery的新代码混合在一起。
我使用了window.onerror
和包装jQuery事件处理程序和onready函数与error handling函数(请参阅: JavaScript错误跟踪:为什么window.onerror是不够 )的组合。
-
window.onerror
:捕获IE中的所有错误(以及Firefox中的大多数错误),但在Safari和Opera中不做任何事情。 - jQuery事件处理程序:捕获所有浏览器中的jQuery事件错误。
- jQuery就绪函数:捕获所有浏览器中的初始化错误。
一旦我发现错误,我添加一些额外的属性(url,浏览器等),然后使用ajax调用回发送到服务器。
在服务器上,我有一个小页面,只需要张贴的参数,并输出到我们的正常的服务器日志框架。
我想开源这个代码(作为一个jQuery插件)。 如果有人有兴趣让我知道,这将有助于说服老板!
如果您使用Google Analytics,则可以将JavaScript错误logging到Google Analytics事件中。
看到这个应用程序: http : //siteapps.com/app/log_javascript_errors_with_ga-181
希望它有帮助。
此外,我build议使用TraceTool实用程序,它具有JavaScript支持,并且非常方便JS监视。
如果您想将客户端错误logging回服务器,则需要进行某种服务器处理。 最好的办法是有一个Web服务,您可以通过JavaScript(AJAX)访问,并将错误日志信息传递给它。
不是100%解决问题因为如果问题是Web服务器托pipe的Web服务,你遇到了麻烦,你还可以通过查询string通过标准页面发送信息,一种方法这样做是通过dynamic生成图像标签(然后将其删除),因为浏览器将尝试加载图像的来源。 它很好地解决了跨域JavaScript调用的问题。 请记住,如果有人closures了图片,则会遇到麻烦;)
我最近一直在使用Appfail ,它捕获了asp.net和JavaScript错误
你可能会从try / catch中向服务器发送Ajax调用,但这可能是你可以做的最好的。
我可以build议JavaScriptunit testing吗? 可能与JSUnit ?