我想使用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应用程序。
答案 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