将ASP.NET请求用户用于Log4net日志条目

时间:2009-06-02 07:46:11

标签: asp.net log4net

我的ASP.NET网站正在使用集成身份验证,并且已关闭模拟功能。我在web.config中的“conversionPattern”中添加了“%username”,以便为每个日志记录条目添加用户名。但是,这将使用应用程序池标识的用户名,而不是当前访问用户的名称。

关于如何做到这一点的任何想法?我必须写一个自定义的appender吗?我不介意任何轻微的性能损失,因为这是一个小型内部网站点。谢谢!

2 个答案:

答案 0 :(得分:6)

最近版本的log4net中内置了ASP.NET模式转换器:

%aspnet-request{REMOTE_ADDR} and %aspnet-request{AUTH_USER}

https://stackoverflow.com/a/7788792/74585

您还可以访问

的内容
  • ASPNET缓存
  • ASPNET上下文
  • ASPNET会话

https://logging.apache.org/log4net/log4net-1.2.13/release/sdk/log4net.Layout.PatternLayout.html

答案 1 :(得分:5)

您可能想要查看的另一种(更简单的)解决方案是使用ThreadContext类(以前实现为MDCNDC类)。您可以在HttpModule内(在请求到达您的页面之前)或在您记录第一条消息之前的任何其他位置使用此类内容:

ThreadContext.Properties["user"] = username;

然后在convertPattern中包含以下内容:

%property{user}