Javascript 将客户端错误记录到服务器

Javascript 将客户端错误记录到服务器,javascript,jquery,asp.net-mvc,error-handling,Javascript,Jquery,Asp.net Mvc,Error Handling,可能重复: 如何将客户端javascript错误记录到服务器?我正在使用jQuery和MVC。因为它们是客户端错误,所以必须使用XMLHttpRequest将它们发送到服务器。您可以使用try…catch语句或window.onerror: window.onerror = function (msg, url, line) { var message = "Error in "+url+" on line "+line+": "+msg; $.post("logerror.a

可能重复:


如何将客户端javascript错误记录到服务器?我正在使用jQuery和MVC。

因为它们是客户端错误,所以必须使用XMLHttpRequest将它们发送到服务器。您可以使用
try…catch
语句或
window.onerror

window.onerror = function (msg, url, line)
{
    var message = "Error in "+url+" on line "+line+": "+msg;
    $.post("logerror.aspx", { "msg" : message }); 
}
请注意,
line
url
在8之前的IE版本中可能非常不准确。

您可以使用my,它有一个使用
XMLHttpRequest
登录到服务器的附件:

var log = log4javascript.getLogger("serverLog");
var ajaxAppender = new log4javascript.AjaxAppender("clientlogger.jsp");
log.addAppender(ajaxAppender);

try {
    nonExistentFunction();
} catch(ex) {
    log.error("Something's gone wrong!", ex);
}

目前我正在使用Elmah日志框架。有没有办法将解决方案链接到这一点?我最近发现了一个很好的托管解决方案:JSNLog(JSNLog.com)允许您在JavaScript中记录客户端上的字符串和对象,并使用Elmah将它们存储在服务器上。在安装JSNLog时,您只需指定Elmah即可。如果您在网站上使用Google Analytics,则记录客户端错误既简单又免费:感谢您的建议。您知道是否可以将此链接到log4net?手动操作非常简单。
AjaxAppender
发送日志数据的默认方式是HTTP post,其参数表示日志事件的各个方面,例如消息、时间戳、严重性等。在服务器上,您将有一个页面或HTTP处理程序来接收post,并基于post参数.JSNLog(JSNLog.com)进行log4net调用这一切都是为你准备的。它由一个JavaScript日志库和一个服务器端dll组成,服务器端dll接收来自JavaScript库的日志消息,并将它们传递到服务器端日志库,如Log4Net、NLog或Elmah。它允许您在web.config中配置JavaScript记录器。它有各种各样的功能,例如抑制重复消息、消息批处理和按浏览器类型过滤。@user1147862:听起来不错。我故意不关注log4javascript中的服务器部分,因此这对于.NET开发人员来说似乎是一个有用的库。如果这个问题没有被关闭,我建议添加一个答案。window.onerror=函数(msg,url,line)对我有效。使用这种方法是否有任何安全问题需要注意?@Arman:没有。有人可以通过自定义消息伪造对
logerror.aspx
的请求,但只要服务器端代码是可靠的,就没有攻击向量。