我在我的网络应用程序上运行Log4net,但是当我尝试运行单元测试时,我无法使用日志工作。
在我的UnitTest项目中,我的AssembyInfo.cs具有以下内容:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
我的UnitTest项目中有一个log4net.config文件:
<?xml version="1.0"?>
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="./SmvServiceTest.log" />
<appendToFile value="true" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<rollingStyle value="Size" />
<maximumFileSize value="2MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
我将此文件设置为复制到输出目录。然而,当我运行我的单元测试时,他们会遇到很多日志语句,但是没有创建日志文件。
我想我已正确设置,单元测试有什么特别之处吗?我只是不明白为什么它不起作用。
任何帮助将不胜感激!
更新:
我想我找到了问题的原因。我去了运行测试的临时位置,发现log4net.config实际上并不存在。我不知道为什么没有被复制,在文件属性中将Copy To Output目录设置为true。
答案 0 :(得分:3)
如果您的配置文件未被复制到单元测试目录结构的 out 文件夹,则这可能不起作用。要复制配置文件,您需要在单元测试中使用 DeploymentItem 属性。
示例:
[TestClass, DeploymentItem("nhibernate_log4net.cfg.xml")]
public class Test
答案 1 :(得分:1)
一切都应该正常。在UnitTestProject\bin\Debug\
目录下查找日志文件。因此,您要指定文件的相对路径,将在那里创建日志文件。