MS 测试单元测试 log4net
MS Test Unit Testing log4net
我想对我的记录器(它是 log4net 的包装器)是否正常工作进行单元测试。我遇到了这方面的问题,因为当单元测试项目中此行为 运行 时出现以下错误:
log4net.Config.XmlConfigurator.Configure();
输出中的错误 window:
log4net:ERROR XmlHierarchyConfigurator: No appender named [TraceLogger] could be found.
log4net:ERROR Appender named [TraceLogger] not found.
这是我的单元测试项目中的完整 app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
</configSections>
<log4net>
<appender name="DatabaseCallAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\App_Data\Logs" />
<datePattern value=".yyyy-MM-dd'-Database.log'" />
<appendToFile value="true" />
<maximumFileSize value="256KB" />
<maxSizeRollBackups value="2" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level %thread %logger - %message%newline" />
</layout>
</appender>
<appender name="TracingAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\App_Data\Logs" />
<datePattern value=".yyyy-MM-dd'-Tracing.log'" />
<appendToFile value="true" />
<maximumFileSize value="256KB" />
<maxSizeRollBackups value="2" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level %thread %logger - %message%newline" />
</layout>
</appender>
<logger name="DatabaseCallsLogger">
<level value="DEBUG" />
<appender-ref ref="DatabaseCallAppender" />
</logger>
<logger name="TraceLogger">
<level value="DEBUG" />
<appender-ref ref="TracingAppender" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="TraceLogger" />
</root>
</log4net>
配置部分与我的主项目中的配置完全相同,其中记录器 class 按预期工作。我已经阅读了一些线程,建议像 运行 设置和自定义配置文件这样的想法,但其中 none 适合我的情况。建议?
问题出在你的 appender-ref 上,它应该指向一个 appender 而不是一个 logger:
<root>
<level value="DEBUG" />
<appender-ref ref="TraceLogger" />
</root>
应该是:
<root>
<level value="DEBUG" />
<appender-ref ref="TracingAppender" />
</root>
我想对我的记录器(它是 log4net 的包装器)是否正常工作进行单元测试。我遇到了这方面的问题,因为当单元测试项目中此行为 运行 时出现以下错误:
log4net.Config.XmlConfigurator.Configure();
输出中的错误 window:
log4net:ERROR XmlHierarchyConfigurator: No appender named [TraceLogger] could be found.
log4net:ERROR Appender named [TraceLogger] not found.
这是我的单元测试项目中的完整 app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
</configSections>
<log4net>
<appender name="DatabaseCallAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\App_Data\Logs" />
<datePattern value=".yyyy-MM-dd'-Database.log'" />
<appendToFile value="true" />
<maximumFileSize value="256KB" />
<maxSizeRollBackups value="2" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level %thread %logger - %message%newline" />
</layout>
</appender>
<appender name="TracingAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\App_Data\Logs" />
<datePattern value=".yyyy-MM-dd'-Tracing.log'" />
<appendToFile value="true" />
<maximumFileSize value="256KB" />
<maxSizeRollBackups value="2" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level %thread %logger - %message%newline" />
</layout>
</appender>
<logger name="DatabaseCallsLogger">
<level value="DEBUG" />
<appender-ref ref="DatabaseCallAppender" />
</logger>
<logger name="TraceLogger">
<level value="DEBUG" />
<appender-ref ref="TracingAppender" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="TraceLogger" />
</root>
</log4net>
配置部分与我的主项目中的配置完全相同,其中记录器 class 按预期工作。我已经阅读了一些线程,建议像 运行 设置和自定义配置文件这样的想法,但其中 none 适合我的情况。建议?
问题出在你的 appender-ref 上,它应该指向一个 appender 而不是一个 logger:
<root>
<level value="DEBUG" />
<appender-ref ref="TraceLogger" />
</root>
应该是:
<root>
<level value="DEBUG" />
<appender-ref ref="TracingAppender" />
</root>