Я бы старался избегать статических классов для вещей, которые потребуют инициализации. Сделайте ваш класс Log нормальным классом и, возможно, имейте отдельный класс фабрики для создания экземпляров или одного экземпляра. Возможно, вы захотите использовать внедрение зависимостей, чтобы избежать какой-либо статики, хотя это может быть болезненным для чего-то вроде ведения журнала, которое довольно универсально.
В частности, для ведения журналов log4net и log4j (по какой-либо причине вы сами сделали это, кстати?) Используют идиому запроса некоторого фабричного класса для экземпляров журнала, основанных на именах (обычно на основе имени типа, использующего его ). Это часто хранится в статической переменной в каждом классе, который должен выполнять регистрацию. Если на возвращаемые объекты ведения журнала все равно может повлиять инициализация подсистемы ведения журнала впоследствии, у вас не останется проблем с упорядочением, когда DI-контейнер должен инициализировать структуру ведения журнала перед инициализацией клиентов ведения журнала и т. Д.
Использование отдельных объектов ведения журнала вместо статического класса улучшает тестируемость - вы можете заменить объект ведения журнала во время теста на объект, который записывает журналы, чтобы гарантировать, что (скажем) информация аудита будет захвачена. Одним из недостатков статически известных объектов регистрации является то, что это уменьшает возможности параллельного запуска тестов.
Извиняюсь за несколько случайные размышления - я еще не пил свой первый кофе. Надеюсь, это поможет.