I want to try log some app messages from my app. In this very situation I just want to force nunit to work with log4net. I found some example here http://www.ofconsulting.com/PublicPortal/ofc-tech-blog/92-configure-log4net-with-nunit.html.
log4net is confugured in app.config like this:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="log.txt" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
</layout>
</appender>
</log4net>
And in my test code is following
[TestFixture]
class DomainTests
{
protected static readonly ILog log = LogManager.GetLogger(typeof(DomainTests));
public void LoggingTests()
{
log4net.Config.XmlConfigurator.Configure();
}
[Test]
public void BasicLogTest()
{
log.Error("write my log entry already");
}
My test is passed but nothing is written inside log.txt file. What am I doing wrong?
I just want to make it as simple as possible to store messages like entering an application, exit application. Regards.
My best guess would be for you to do something like this:
[TestFixture]
class DomainTests
{
protected static readonly ILog log = LogManager.GetLogger(typeof(DomainTests));
public void LoggingTests()
{
log4net.Config.XmlConfigurator.Configure();
}
[Test]
public void BasicLogTest()
{
log.Error("write my log entry already");
}
[SetUp]
RunBeforeAnyTests()
{
BasicConfigurator.Configure();
}
[TearDown]
RunAfterAnyTests()
{
// ...
}
I'd also use the Log4Net.config file rather than the app.config file, it just seems cleaner. Here's an example log4net.config file:
<log4net>
<!-- A1 is set to be a LogFileAppender -->
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net" >
<param name="File" value="C:\logging\log.txt" />
<file value="c:\logging\Main" />
<appendToFile value="true" />
<datePattern value="yyyyMMdd'.log'" />
<rollingStyle value="Composite" />
<staticLogFileName value="false" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="500MB" />
<!-- A1 uses PatternLayout -->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<!-- Set root logger level to DEBUG and its only appender to LogFileAppender -->
<root>
<!--<level value="OFF" />-->
<!--<level value="FATAL" />-->
<!--<level value="ERROR" />-->
<!--<level value="WARN" />-->
<!--<level value="INFO" />-->
<level value="DEBUG" />
<!--<level value="ALL" />-->
<appender-ref ref="LogFileAppender" />
</root>
</log4net>