当前位置:  开发笔记 > 编程语言 > 正文

在服务器上记录客户端JavaScript错误

如何解决《在服务器上记录客户端JavaScript错误》经验,为你挑选了3个好方法。

我运行一个ASP.NET站点,我有问题,只需手动测试就可以找到一些JavaScript错误.

是否有可能捕获客户端上的所有JavaScript错误并将其记录在服务器上,即在EventLog中(通过Webservice或类似的东西)?



1> Jonny Buchan..:

您可以尝试为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);
};


如果它在处理程序中崩溃,它会无限循环吗?
@ Jean-PhilippeLeclerc是的。更糟糕的是,如果您陷入错误循环,它将对您的服务器终结点进行DoS。您应该为此添加一个限制功能,以防止客户端攻击服务器的速度过快。这是来自{Track:js} https://github.com/TrackJs/Tech-Demo/blob/master/src/TrackJs.Demo/Content/js/transmission.js的示例

2> Ztyx..:

简短回答:是的,有可能.

更长的回答:人们已经写过关于如何(至少部分地)通过编写自己的代码来解决这个问题的文章.但请注意,有些服务似乎确保了JS代码在许多浏览器中都能正常工作.我发现了以下内容:

http://trackjs.com

https://www.atatus.com

http://jserrlog.appspot.com

http://muscula.com

我不能说任何这些服务,因为我还没有尝试过.



3> Karl..:

我刚刚在工作中的项目上实现了javascript错误的服务器端错误记录.遗留代码和使用jQuery的新代码混合在一起.

我使用window.onerrorjQuery事件处理程序和onready函数的组合和包含错误处理函数(请参阅:JavaScript错误跟踪:为什么window.onerror不够).

window.onerror:捕获IE中的所有错误(以及Firefox中的大多数错误),但在Safari和Opera中无效.

jQuery事件处理程序:捕获所有浏览器中的jQuery事件错误.

jQuery ready函数:捕获所有浏览器中的初始化错误.

一旦我发现错误,我会添加一些额外的属性(网址,浏览器等),然后使用ajax调用将其发回服务器.

在服务器上,我有一个小页面,它只接受发布的参数并将它们输出到我们的普通服务器日志框架.

我想为此开源代码(作为jQuery插件).如果有人有兴趣让我知道,那将有助于说服老板们!

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有