Log4Net - 在单元测试中检查附加的appender

时间:2014-07-24 09:31:50

标签: c# configuration log4net

我有一个问题需要诊断,为了理解它,我写了两个单元测试 - 一个在我的配置中存在Logger,另一个获得不存在的记录器。

第一个惊喜是,即使记录器名称不存在,我仍然会收到一些东西(而不是NULL,正如我所期待的那样)。它甚至附加了ConsoleAppender ....好吧....但是它来自哪里?

Log4net config:

<log4net>
   <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="C:\tmp\log" />
      ... (some other settings) ....
   </appender>
   <root>
      <level value="FATAL"/>  
      <appender-ref ref="RollingFileAppender" />
   </root>
   <logger name="DefinedLogger" additivity="false">
      <level value="DEBUG" />
      <appender-ref ref="MyCustomAppender" />
   </logger>
   <appender name="MyCustomAppender" type="MyAssembly.CustomAppender, MyAssembly">
      .....
   </appender>
</log4net>

接下来,我试图了解如何检查每个记录器中配置的appender。我第一次尝试使用.Repository继续回放我的配置文件中配置的所有三个appender - 好的,有意义,因为它是存储库中的所有appender ....但是我怎样才能检查个别条目附加什么附加者?

[Test]
public void TestGetLoggerWithValidNameGetsLogger() {
    // Arrange
    string loggerName = "DefinedLogger";

    // Act
    ILog myCustomLogger = LogManager.GetLogger(loggerName);

    // this returns *ALL* appenders in the config - not those attached to this logger....
    var appenders = myLogger.Logger.Repository.GetAppenders();  

    // Assert            
    Assert.IsNotNull(myCustomLogger, "MyCustomLogger is NULL");
}

有什么想法吗?如何检查以确保在此记录器上附加了正确的附加器?

0 个答案:

没有答案