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");
}