【问题标题】:Can't configure log4net Logger programmatically无法以编程方式配置 log4net Logger
【发布时间】:2018-10-22 14:11:12
【问题描述】:

我需要以编程方式配置 log4net Logger。具体来说,我需要添加一个带有一个附加程序的Logger。但是,当我检索它时,我发现它没有正确的级别或附加程序,并且希望我错过了一些简单的配置仪式:

        var patternLayout = new PatternLayout { ConversionPattern = "%message%newline" };
        patternLayout.ActivateOptions();

        var hierarchy = (Hierarchy)LogManager.GetRepository();

        var testAppender = new RollingFileAppender
        {
            Name = "test-appender",
            AppendToFile = true,
            File = "c:\\temp\\test.log",
            Layout = patternLayout,
            DatePattern = "yyyyMMdd-HHmm",
            MaxSizeRollBackups = 50,
            MaximumFileSize = "20MB",
            RollingStyle = RollingFileAppender.RollingMode.Size,
            StaticLogFileName = false,
            Encoding = Encoding.UTF8,
            PreserveLogFileNameExtension = true,
            Threshold = Level.Debug
        };

        testAppender.ActivateOptions();

        var testLogger = hierarchy.LoggerFactory.CreateLogger(hierarchy, "test");
        testLogger.Hierarchy = hierarchy;
        testLogger.AddAppender(testAppender);
        testLogger.Repository.Configured = true;
        testLogger.Level = Level.Debug;
        testLogger.Additivity = false;

        hierarchy.Configured = true;

        var testLogger = LogManager.GetLogger("test");

记录器“testLogger”的级别为空且没有附加程序。我错过了什么?

【问题讨论】:

    标签: log4net configure programmatically


    【解决方案1】:

    而不是调用

    var testLogger = hierarchy.LoggerFactory.CreateLogger(hierarchy, "test");
    

    我打电话

    var testLogger = hierarchy.GetLogger("test", hierarchy.LoggerFactory);
    

    这很奏效。如果记录器尚不存在,GetLogger 将创建记录器。

    【讨论】:

    • 为什么这个答案没有1000个赞!!! :D 非常感谢!这花了我几个小时,直到我终于明白 log4net 需要做什么!
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2015-02-11
    • 2010-10-20
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多