我想知道在NUnit项目中初始化log4Net的最佳方式是什么。当然,我想尽可能早地调用init代码(即XmlConfigurator.Configure()
),以尽可能多地获得早期日志输出。但是因为我的项目是通过NUnit运行的,所以我很少控制它的入口点。用NUnit尽早初始化log4Net
根据NUnit文档,它应该先调用一些构造函数,然后在标有[TestFixtureSetup]
的类中标记为[SetUp]
属性的方法。
所以,首先,我创建了一个静态帮助器类,我可以多次调用而没有麻烦。
public static class LoggingFacility
{
private static bool _loggerIsUp = false;
public static void InitLogger()
{
if (_loggerIsUp == false)
XmlConfigurator.ConfigureAndWatch(f);
_loggerIsUp = true;
}
}
于是,我做了所有我[TestFixtureSetup]
继承一个一个没有几乎没有什么比调用其他LoggingFacility.initLogger()
。但是,这仍然留下了所有先前运行的构造函数,我只能假设它是随机的。而且,在我甚至能够执行一些代码之前,它可能会进行一些静态初始化。
事实上,正如我在我的日志中看到的,执行的前4秒左右完全没有记录。
这是否意味着我将不得不在每个构造函数中调用我的InitLogger()
并禁止使用任何静态初始化方法?这是一项艰巨的工作!
有人知道这个魔术吗?
只是想为其目的,您正在使用log4net的在测试中,记录测试进度/结果或实例化一个记录器的一些类的依赖 – sll 2012-03-07 21:22:10
@sll?我使用两个日志记录输出:第一个是测试输出比NUnit本身更详细,第二个(我需要快速准备的)用于调试测试应用程序 – PPC 2012-03-08 14:16:53