asp.net - 使用 ASP.NET 请求用户获取 Log4net 日志条目

我的 ASP.NET 站点使用集成身份验证并关闭模拟。我在 web.config 中的“conversionPattern”中添加了一个“%username”,以将用户名添加到每个日志条目中。但是,这将使用应用程序池身份的用户名,而不是当前访问用户的名称。

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

最佳答案

您可能想要查看的替代(更简单)解决方案是使用 ThreadContext 类(以前实现为 MDC NDC 类)。在您记录第一条消息之前,您可以在 HttpModule 中(在请求到达您的页面之前)或其他任何地方包含类似内容:

ThreadContext.Properties["user"] = username;

然后在您的conversionPattern 中包含以下内容:
%property{user}