Log4net not working with NUnit
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
NUnit Framework |
Triaged
|
High
|
Unassigned | ||
NUnit V2 |
Fix Released
|
Low
|
Charlie Poole | ||
Bug Description
[Bug now tracked at https:/
Problem: Using log4net with newer versions of nunit means that no
log file is created.
Demonstration follows.
I created the solution in VS 2008.
The OS is Windows XP.
I tested using both the nunit GUI and console.
I compared Nunit 2.2.5 with 2.5.5 (I suspect 2.5.0 will fail as well.)
The solution is created as a console app.
When the app is run as a console application a Log file is produced.
When the app is run using 2.2.5 a Log file is produced.
When the app is run using 2.5.5 no Log file is produced.
There are two files in the solution: Log.config and Program.cs
Following comes from a file name "Log.config"
-------
<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="false">
<appender name="DefaultLo
<file value=".\Log" />
<appendToFile value="false" />
<
<rollingStyle value="Date" />
<datePattern value="
<layout type="log4net.
</layout>
</appender>
<root>
<level value="All" />
<appender-ref ref="DefaultLog
</root>
</log4net>
-------
Following is Program.cs
-------
using System;
using System.Reflection;
using NUnit.Framework;
[assembly: log4net.
namespace TestNunitLog4net
{
[TestFixture]
public class Program
{
private static readonly log4net.ILog log
= log4net.
// Test scenarios
// Test 1: Works - log show up (gui and console)
// log4net: 1.2.10.0
// Nunit: 2.2.5.0
// Test 2: Fails - no log file (gui and console)
// log4net: 1.2.10.0
// Nunit: 2.5.5.10112
// Following has no impact.
// It exists just so we can see it in log.
private readonly String exeType;
static void Main()
{
Program p = new Program("Exe");
p.TestLog();
}
private Program(String stype)
{
this.exeType = stype;
}
public Program()
{
this.exeType = "Nunit";
}
[Test]
public void TestLog()
{
log.
log.
}
} // End of class
} // End of namespace
-------
Related branches
tags: | added: confirm |
Changed in nunitv2: | |
assignee: | nobody → Charlie Poole (charlie.poole) |
milestone: | none → 2.6.0 |
Changed in nunitv2: | |
status: | Fix Committed → Fix Released |
Changed in nunit-3.0: | |
milestone: | none → 2.9.6 |
tags: | added: gui |
Changed in nunit-3.0: | |
milestone: | 2.9.6 → none |
description: | updated |
tags: | added: github |
With current versions of NUnit, you can make your example work by adding a line like this to the public constructor... Config. XmlConfigurator .Configure( new System. IO.FileInfo( "Log.config" ));
log4net.
I have confirmed that the program works without this change under NUnit 2.2.10. It does not work under 2.4.8 or 2.5.7. Whatever changed, it was a long time back. We'll work this problem as time is available, but it's a low priority.
BTW, I like your trick for running the same program under NUnit and standalone.
Charlie