我目前将所有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代码提取.
我想为现有日志消息上的所有消息添加类别前缀.但是,将此前缀逐个添加到所有现有日志记录消息中非常繁琐.有没有办法可以在类级别添加一个属性,那么这个类中的所有消息都会记录到某个类别?
而不是现在的方式如下,
Log.Info("[Ref] Level 1 Starts ...");
Run Code Online (Sandbox Code Playgroud)
我真的想要这样或类似的方式来定义log4net.ILog.
[LoggingCategory("Ref")]
public class MyClass
{
public void MyMethod()
{
Log.Info("Level 1 Starts ...");
}
}
Run Code Online (Sandbox Code Playgroud) 这是问题:我想在日志文件中的每一行添加行索引器(行号或迭代器).我不需要它对于整个日志文件是唯一的,但仅适用于"应用程序会话"(即每次启动Win32应用程序时,我们开始倒计时:1,2,3等等)
是内置方式(转换模式标记语法)还是一些自定义扩展?
非常感谢!