我正在尋找一種在ASP.NET中使用log4net啓用IP日誌記錄的方法。我找到了一個solution,但它在應用程序級別工作。任何建議/實踐如何在會話級別登錄IP?如何使用Log4Net啓用IP地址日誌記錄
感謝
我正在尋找一種在ASP.NET中使用log4net啓用IP日誌記錄的方法。我找到了一個solution,但它在應用程序級別工作。任何建議/實踐如何在會話級別登錄IP?如何使用Log4Net啓用IP地址日誌記錄
感謝
在Application_BeginRequest
,做
MDC.Set("addr", Request.UserHostAddress);
,然後確保你的PatternLayout
包含%X{addr}
某處模式字符串。
更新:作爲塔達斯所指出的,在較新版本的log4net的等效是
ThreadContext.Properties["addr"] = Request.UserHostAddress;
加上模式字符串%P{addr}
。
隨着log4net的1.2.11(2011年10月)添加以下到您的模式佈局:
%aspnet-request{REMOTE_ADDR}
或當前用戶:
%aspnet-request{AUTH_USER}
有關新的更多信息,請參見https://issues.apache.org/jira/browse/LOG4NET-87 asp.net模式轉換器(%aspnet-cache,%aspnet-context和%aspnet-request)。
看着jira的評論,它看起來像緩衝區大小超過1時,它缺乏支持緩衝appender,如AdoNetAppender。你用它們與這樣的appender? – 2015-08-31 10:19:42
太棒了!謝謝。我只想指出MDC類已被棄用(http://svn.apache.org/repos/asf/logging/site/trunk/docs/log4net/release/sdk/log4net.MDC.html)並轉發給ThreadContext。屬性。 – 2009-08-27 12:32:52
不錯 - 我以前做過這個,但忘記了。 +1 – 2009-10-07 09:12:49
請注意asp.net的「線程敏捷性」功能:它會破壞log4net上下文。看[這個博客](http://piers7.blogspot.com/2005/12/log4net-context-problems-with-aspnet.html)和[這個答案](http://stackoverflow.com/a/9000825/ 1178314)關於另一個問題的更多細節。 – 2015-08-31 10:16:27