【问题标题】:Adding an Appender in Code to Root for Tests - Log4Net在代码中添加 Appender 以进行测试 - Log4Net
【发布时间】:2020-09-10 17:16:26
【问题描述】:

我正在尝试通过我的测试类中的代码向root 记录器添加一个自定义附加程序。我在一个名为Logging.cs 的包装类中配置了log4net

这是我来自 Logging.cs 类的构造函数:

public Logging(Type type)
{
    XmlDocument log4netConfig = new XmlDocument();
    log4netConfig.Load(File.OpenRead("log4net.config"));

    var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));

    XmlConfigurator.Configure(repo, log4netConfig["log4net"]);

    log4netLogger = LogManager.GetLogger(type);
    LogManager.GetLogger(type);
}

在查看了一些示例后,我将其编码到我未完成的测试方法中:

[Fact]
public void TestOutput()
{
    var appender = new StringAppender();

    var logger = new Logging(typeof(TestLibrary));

    Hierarchy h = (Hierarchy)log4net.LogManager.GetRepository();

    Logger rootLogger = h.Root;
}

但是,GetRepository() 需要一个作为 string 的回购名称,我不确定,而且总的来说我不知道​​我是否走在正确的道路上。

这是自定义附加程序:

public class StringAppender : AppenderSkeleton
{
    private string message { get; set; }
    protected override void Append(LoggingEvent loggingEvent)
    {
        message = loggingEvent.RenderedMessage;
    }

    public string GetMessage()
    {
        return message;
    }
}

【问题讨论】:

    标签: asp.net-core log4net


    【解决方案1】:

    经过更多的研究和实验,我发现如果你传入Assembly.GetEntryAssembly()LogManager.GetRepository() 对我有用

    工作代码是:

    // my custom appender
    var appender = new StringAppender();
    
    // my logger wrapper class
    var logger = new Logging(typeof(TestLibrary));
    
    // hierachy 
    Hierarchy h = (Hierarchy)log4net.LogManager.GetRepository(Assembly.GetEntryAssembly());
    
    // get the root logger
    Logger rootLogger = h.Root;
    
    // add the appender
    rootLogger.AddAppender(appender);
    
    // set the root logger level
    rootLogger.Level = Level.Debug;
    
    // log4net via the wrapper class
    logger.Debug("Hello, from TestLibrary Class");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多