Теперь Log4Net.config не загружается, поскольку я переместил свой класс-оболочку в его собственный класс project

StackOverflow https://stackoverflow.com/questions/1347429

Вопрос

Кто-нибудь может помочь, я успешно использую 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 сканирует вызывающую сборку, чтобы найти атрибут.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top