Log4Net中每种类型的动态记录器

ben*_*ree 4 c# asp.net-mvc log4net

我在ASP.NET MVC网站上使用(可能滥用)log4net.我希望每个类有一个记录器(文档建议),但似乎我需要为每个类预先配置一个记录器.

是对的吗?我是否需要预定义每个记录器?

我正在附加到SqlServer并且可以看到Logger模式中指定的列.看起来应该很容易将我想要的东西放在那个领域,但我能找到的唯一动态记录器创建就在这里.我错过了什么吗?

Met*_*urf 5

您无需预先定义每个记录器.相反,传统方法是使用log4net记录器的标准模式,该模式使用消费类中的反射来声明记录器Type.只需将此属性转储到每个类中,您就可以了:

private static log4net.ILog _logger;
private static log4net.ILog Logger
{
    get
    {
        if( _logger == null )
        {
            Type type = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType;
            _logger = log4net.LogManager.GetLogger( type );
        }
        return _logger;
    }
}
Run Code Online (Sandbox Code Playgroud)