我在基于asp.net的网站上搜索跟踪用户的最佳方式
我们使用log4net记录一些业务操作(在此页面上输入,单击按钮等)。但是对于多个用户来说,日志文件不容易阅读。
所以我需要在配置文件中添加一个属性'UserName',如下所示:
<conversionPattern value="%date [%thread] - %property{UserName} - %-5level - %logger - %message%newline"/>
您对设置'UserName'的方式有什么看法吗?
感谢您的帮助
答案 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
答案 1 :(得分:0)
您可以定义这样的用户名(或任何其他)属性:
this.SetThreadContext("UserName", userName);
假设userName
包含用户名。
修改(您真正想做的事):
为log4net(带接口)编写一个包装器并制作一些方法,例如SetUserName
喜欢这样:
public void SetUserName(Func<string> getUserName)
您在应用程序启动时调用此方法,并传递一些返回当前登录用户的方法(来自HttpContext)。您需要将委托存储在某处,也许是静态变量。然后,您有在各个级别进行日志记录的方法,每个方法都调用委托(Func<string> getUserName
)并设置线程上下文属性,如上所示。这样,您无需在每次调用记录器之前手动设置线程上下文属性...