3

我有 Log4net 在我的 Web 应用程序上工作,但是当我尝试运行我的单元测试时,我无法让日志记录工作。

在我的 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>

我将此文件设置为Copy to Output directory。然而,当我运行我的单元测试时,他们遇到了很多日志语句,但没有创建日志文件。

我想我已经正确设置了它,单元测试有什么特别之处吗?我只是不明白为什么它不起作用。

任何帮助,将不胜感激!

更新

我想我已经找到了问题的原因。我去了运行测试的临时位置,发现log4net.config实际上不存在。我不知道为什么它没有被复制过来,复制到输出目录在文件属性中设置为 true。

4

2 回答 2

3

如果您的配置文件没有被复制到单元测试目录结构的out文件夹中,这可能不起作用。要复制配置文件,您需要在单元测试中使用DeploymentItem属性。

例子:

[TestClass, DeploymentItem("nhibernate_log4net.cfg.xml")]
public class Test
于 2013-09-18T19:21:21.467 回答
1

一切都应该正常工作。在目录下查找日志文件UnitTestProject\bin\Debug\。因此,您正在指定文件的相对路径,日志文件将在那里创建。

于 2013-09-17T18:54:17.030 回答