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

C# Log4Net-在单元测试中检查附加的appender,c#,configuration,log4net,C#,Configuration,Log4net,我需要诊断一个问题,为了理解它,我编写了两个单元测试——一个是获取我的配置中存在的Logger,另一个是获取不存在的Logger 第一个惊喜是,即使记录器名称不存在,我仍然得到了一些东西(而不是我所期望的NULL)。它甚至还附带了一个控制台pender。。。。可以但这是从哪里来的呢 Log4net配置: <log4net> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppe

我需要诊断一个问题,为了理解它,我编写了两个单元测试——一个是获取我的配置中存在的
Logger
,另一个是获取不存在的Logger

第一个惊喜是,即使记录器名称不存在,我仍然得到了一些东西(而不是我所期望的
NULL
)。它甚至还附带了一个
控制台pender
。。。。可以但这是从哪里来的呢

Log4net配置:

<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连接到我的日志记录程序?

您的
MyCustomAppender
是从log4net混凝土appender继承的还是从
AppenderSkeleton继承的?,也适用于
ConsoleAppender
part@PhilipPittle:它直接从AppenderSkeleton继承
Marc\s您能在调用
的地方显示您的代码吗在我的测试夹具的
[SetUp]
方法中。这似乎已导致将
ConsoleAppender
添加到所有记录器中。我已经删除了这个,一切正常-但我仍然不知道如何检查每个记录器的基础上附加的附件。。。。
[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");
}