Инициализируйте log4Net как можно раньше с помощью NUnit
Мне интересно, каков наилучший способ инициализации log4Net в проекте NUnit. Конечно, я хочу вызвать код инициализации (т.е.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()
в каждом конструкторе и запретить использование любого статического инициализатора? Это тяжелая работа!
Кто-нибудь знает магический трюк с этим?