Теперь Log4Net.config не загружается, поскольку я переместил свой класс-оболочку в его собственный класс project
-
20-09-2019 - |
Вопрос
Кто-нибудь может помочь, я успешно использую log4net, у меня в основном был статический класс (оболочка) в моем вебпроекте, и я загружаю свою конфигурацию из внешнего файла с именем log4net.config, добавив это в assemblyinfo.cs
// log4net config file
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
Все хорошо!, теперь я решил перенести свой статический класс в его собственный class project, чтобы я мог поделиться своим статическим классом (оболочкой) с другими проектами.
log4net.config все еще находится в webproject, но, конечно, сейчас он не загружается, я могу сказать это, потому что в моем статическом классе (теперь его собственном проекте) я делаю
return LogManager.GetLogger("InfoLogger").IsInfoEnabled;
и IsInfoEnabled возвращает false, и ничего не регистрируется, файл .config не читается...
Помните, что оболочка Log4net (статический класс) находится в его собственном классе project, но файл .config находится в веб-проекте ihave..Мне это нужно так, потому что .config может меняться в зависимости от проекта, но обычно оболочка этого не делает.
Конечно , я думал , что создам абстрактный класс и просто унаследую его в своем вебпроекте и переопределю все , что мне нужно ...НО, конечно, вы не можете наследовать статические классы или даже создавать абстрактные..
Я уверен, что кто-то еще сталкивался с этим, есть идеи?..любая помощь действительно ценится
Решение
Вам нужно поместить атрибут сборки XmlConfigurator в библиотеку классов, которая оборачивает log4net.Вы можете сохранить свой файл log4net.config в корневом каталоге вашего веб-приложения.
Атрибут сборки XmlConfigurator считывается при первой инициализации log4net.Log4net сканирует вызывающую сборку, чтобы найти атрибут.