我正在寻找一种在ASP.NET中使用log4net启用IP日志记录的方法。我发现了一个solution,但它适用于应用程序级别。有关如何在会话级别记录IP的任何建议/实践吗?
由于
答案 0 :(得分:19)
使用log4net 1。2。11(2011年10月),您可以在模式布局中添加以下内容:
%aspnet-request{REMOTE_ADDR}
或者对于当前用户:
%aspnet-request{AUTH_USER}
有关新的asp.net模式转换器(%aspnet-cache,%aspnet-context和%aspnet-request)的更多信息,请参阅https://issues.apache.org/jira/browse/LOG4NET-87。
答案 1 :(得分:18)
在Application_BeginRequest
中,执行
MDC.Set("addr", Request.UserHostAddress);
然后确保您的PatternLayout
在模式字符串中的某处包含%X{addr}
。
更新:正如Tadas指出的那样,在较新版本的log4net中等效的是
ThreadContext.Properties["addr"] = Request.UserHostAddress;
在模式字符串中加上%P{addr}
。