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

标签 c# asp.net-mvc log4net

我在 ASP.NET MVC 网站中使用(可能滥用)log4net。我想每个类(class)有一个记录器 ( which the docs suggest ),但似乎我需要为每个类(class)预先配置一个记录器。

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

我正在追加到 SqlServer 并且可以在架构中看到名为 Logger 的列。似乎在该字段中放置任何我想要的东西应该很容易,但我能找到的唯一动态记录器创建是 here .我错过了什么吗?

最佳答案

您不需要预先定义每个记录器。相反,传统的方法是使用 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;
    }
}

关于c# - Log4Net 中每种类型的动态记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737412/

相关文章:

C#:Brainfuck 括号查找器

asp.net-mvc - Asp.Net Mvc 4 源代码?

asp.net - 如何在 Log4Net 目录中指定日期?

c# - Log4net 以编程方式配置 adoAppender

asp.net - 像在Elmah中一样从log4net读取日志?

c# - 最后读取的对象正在替换集合 ArrayList 中的所有项目

c# - 通过 Xamarin 在 UWP 上使用文本转语音

c# - 如何在C#字符串中替换其他字符而忽略其他字符?

asp.net-mvc - 如何使用 VB 实现 DropDownListFor 的 htmlAttributes MVC

c# - ASP.NET MVC Core WebAPI 项目不返回 html