-1

最近测试了一个使用 log4net(.NET) 的日志项目,它是一个控制台项目。如果在VS中运行项目可以创建日志文件,但如果在NUnit中运行.exe文件则无法创建日志文件。日志内容只是在 UNnit GUI 中打印出来。没有错误引发。为什么?我在 App.config 中配置 log4net。


我需要使用 Nunit 来测试这个案例。


我用谷歌搜索,没有答案。


我在 App.config 中的配置文件如下:

<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>

<log4net>
<root>
  <level value="WARN">
  </level>     
  <appender-ref ref="SystemLogFileAppender" />
</root>

<appender name="SystemLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <param name="File" value="d:\" type="" />
  <param name="AppendToFile" value="true" />
  <param name="RollingStyle" value="Date" />
  <param name="DatePattern" value="yyyyMMdd_SYS.TXT" />
  <param name="StaticLogFileName" value="false" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

  <Encoding value="UTF-8" />
  <layout type="Log.LogLayout">
    <param name="ConversionPattern" value=" Level: %property{Level}%n Message: %property   {Message}%n Exception: %property{Exception}%n CreateDate: %property{CreateDate}%n%n" />
  </layout>
  <filter type="Log.SystemLogFilter">
  </filter>
  </appender>

我在项目的 AssemblyInfo.cs 中添加了以下代码,但不起作用:

[assembly: log4net.Config.XmlConfigurator()]

然后,我将其更改为以下,不再工作:

[assembly: log4net.Config.XmlConfigurator(ConfigFile=@"D:\LogTest\FrameworkTest.exe.config",Watch=true)]
4

2 回答 2

1

no error raise:如果 log4net 无法记录或找不到记录信息或 dll 中未配置 log4net.Config.XmlConfigurator,log4net 将不会记录并且不会引发错误。是因为日志记录不应该影响你的程序。

如果没有写入日志,您可能有配置问题。日志记录必须在 NUnit 的运行目录中配置。您应该使用二进制文件部署 log4net.config 并将属性添加到您的测试项目(用于登录您的测试项目):

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
于 2013-02-25T14:48:40.697 回答
0

我将 NUnit 更新到 version2.6.2,然后工作。使用配置:

[assembly: log4net.Config.XmlConfigurator()]
于 2013-02-26T03:19:44.320 回答