当多个客户端同时使用应用程序时,如何使用asp.net中的Log4net记录客户端IP,浏览器名称和用户名?

时间:2014-06-20 06:01:23

标签: c# asp.net web-config log4net

我想使用log4net库记录客户端IP地址,浏览器名称和Windows身份验证用户名。

我试图这样做,但它不起作用。

所以请帮帮我。

服务器端代码:

log4net.GlobalContext.Properties["Hostname"] = GetIP();
log4net.GlobalContext.Properties["Browser"] =  HttpContext.Current.Request.Browser.Type;
log4net.GlobalContext.Properties["username"] = HttpContext.Current.Request.LogonUserIdentity.Name;

Web.Config代码:

这很好用。但如果多个用户同时工作,它会记录相同的IP和其他信息。 原因可能是我设置了GlobalContext属性。因此,所有信息都会被最新登录的用户覆盖。

所以它不符合我的要求。 我想记录每个登录用户的信息,即使他们同时使用Web应用程序。

1 个答案:

答案 0 :(得分:1)

您可以在配置中使用PatternLayout并从HttpRequest中引用您想要的值,如下所示:

%aspnet-request{key}  

其中{key}是您要抓取的HttpRequest.Item中属性的键。您也可以使用它而不使用密钥转储所有属性。例如,您可以输入以下内容来获取IP地址:

%aspnet-request{REMOTE_ADDR}

此处有更多文档:http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html