使用log4net跟踪用户的网站

时间:2010-06-09 16:02:17

标签: asp.net log4net

我在基于asp.net的网站上搜索跟踪用户的最佳方式 我们使用log4net记录一些业务操作(在此页面上输入,单击按钮等)。但是对于多个用户来说,日志文件不容易阅读。

所以我需要在配置文件中添加一个属性'UserName',如下所示:

 <conversionPattern value="%date [%thread] - %property{UserName} - %-5level  - %logger - %message%newline"/>

您对设置'UserName'的方式有什么看法吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

以下属性是

   %username the Windows identity of user making the log entry; slow 

检查更多详情:http://www.beefycode.com/post/Log4Net-Tutorial-pt-4-Layouts-and-Patterns.aspx

查看此文章:Capture Web Events in log4net

答案 1 :(得分:0)

您可以定义这样的用户名(或任何其他)属性:

this.SetThreadContext("UserName", userName);

假设userName包含用户名。

修改(您真正想做的事):

为log4net(带接口)编写一个包装器并制作一些方法,例如SetUserName喜欢这样:

public void SetUserName(Func<string> getUserName)

您在应用程序启动时调用此方法,并传递一些返回当前登录用户的方法(来自HttpContext)。您需要将委托存储在某处,也许是静态变量。然后,您有在各个级别进行日志记录的方法,每个方法都调用委托(Func<string> getUserName)并设置线程上下文属性,如上所示。这样,您无需在每次调用记录器之前手动设置线程上下文属性...