我想知道在 NUnit 项目中初始化 log4Net 的最佳方法是什么。当然,我想尽快调用初始化代码(即 . XmlConfigurator.Configure()
),以获得尽可能多的早期日志输出。但是由于我的项目是通过 NUnit 运行的,所以我几乎无法控制它的入口点。
根据 NUnit 文档,它应该首先调用一些构造函数,然后调用一个用 标记[SetUp]
的类中的属性标记的方法[TestFixtureSetup]
。
所以,首先,我创建了一个静态帮助类,我可以毫无问题地多次调用它。
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()
在每个构造函数中调用 my 并禁止使用任何静态初始化程序?这是一项艰巨的工作!
有人知道这个魔术吗?