c# – Log4Net:Dispose MemoryAppender

我正在使用MemoryAppender在单元测试中读取日志消息.

我以下列方式使用BasicConfigurator:

    class LogVerifier 
    { 
      private MemoryAppender m_appender; 
      public LogVerifier() 
      {
          m_appender = new MemoryAppender(); 
          BasicConfigurator.Configure(m_appender); 
      }

    //other stuff 

    }

因此,将为每个单元测试创​​建此类的对象.
我试图找到这个静态类BasicConfigurator是否保留对m_appender的引用,因为如果这样我想在每次使用后配置m_appender.

任何人都有任何关于如何实现这一目标的线索?

谢谢,

最佳答案 我有一些nUnit测试,根据写入log4net(或不是)的事件进行断言.我使用这个拆卸代码,它运作良好.

[TestFixtureTearDown]
protected void TeardownLogging()
{
    if (m_appender != null)
    {
        m_appender.Clear();
        m_appender.Close();
    }
    m_appender = null;

    var appenders = ((log4net.Repository.Hierarchy.Hierarchy) LogManager.GetRepository()).Root as log4net.Core.IAppenderAttachable;
    appenders.RemoveAllAppenders();
}
点赞