最近测试了一个使用log4net(.NET)的日志项目,它是一个控制台项目。如果在VS中运行项目,则可以创建日志文件,但如果在NUnit中运行.exe文件,则无法创建日志文件。日志内容只需在UNnit GUI中打印出来。没有错误提高。 为什么?我在App.config中配置了log4net。
我需要使用Nunit来测试这个案例。
我用Google搜索,没有回答。
我在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)]
答案 0 :(得分:1)
没有错误提升:如果log4net无法登录或找不到日志信息或者未在dll中配置log4net.Config.XmlConfigurator,则log4net将不会记录并且不会引发错误。是因为日志记录不应该影响你的程序。
如果没有写入日志,则可能存在配置问题。必须在NUnit的运行目录中配置日志记录。您应该将log4net.config与二进制文件一起部署,并将该属性添加到测试项目中(用于登录测试项目):
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
答案 1 :(得分:0)
我将NUnit更新为版本2.6.2,然后工作。使用配置:
[assembly: log4net.Config.XmlConfigurator()]