我目前将所有log4net事件写入数据库,它似乎工作正常.要捕获登录的用户帐户,我使用以下代码:
HttpContext context = HttpContext.Current;
if (context != null && context.User != null && context.User.Identity.IsAuthenticated)
{
MDC.Set("user", HttpContext.Current.User.Identity.Name);
}
Run Code Online (Sandbox Code Playgroud)
代码似乎没问题,除了没有与之关联的用户上下文的事件(即我们公共网页上的用户).在这种情况下,log4net捕获似乎有时写入最后登录的用户帐户(坏),有时写入空(好).任何人都有这个功能在所有情况下都可靠地工作?我相信我看到一条说明MDC不再是推荐使用的功能,但我无法找到任何推荐的替代品.
注意:我发现MDC设置了帐户名称很奇怪,但如果没有用户处于活动状态,则永远不会清除.这可能是问题的一部分.但是,我没有找到任何也清除用户名的MDC代码提取.