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

Может кто-нибудь помочь, я успешно использую log4net, у меня в основном есть статический класс (обертка) в моем веб-проекте, и я загружаю свою конфигурацию из внешнего файла с именем log4net.config, добавив его в assemblyinfo.cs

    // log4net config file
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]

Все хорошо! Теперь я решил переместить свой статический класс в собственный проект класса, чтобы я мог поделиться своим статическим классом (оберткой) с другими проектами.

log4net.config все еще находится в веб-проекте, но, конечно, сейчас он не загружается, я могу сказать это, потому что в моем статическом классе (теперь его собственном проекте) я делаю

          return LogManager.GetLogger("InfoLogger").IsInfoEnabled;

и IsInfoEnabled возвращает false, и ничего не регистрируется, файл .config не читается ...

Помните, что оболочка Log4net (статический класс) находится в своем собственном проекте класса, но файл .config находится в веб-проекте ihave. Мне это нужно, потому что .config может меняться в зависимости от проекта, но обычно это оболочка. не будет.

Конечно, я думал, что создам абстрактный класс и просто унаследую в своем веб-проекте и переопределю что угодно, если мне нужно ... НО, конечно, вы не можете наследовать статические классы или даже создавать абстрактные ..

Я уверен, что кто-то еще сталкивался с этим, есть идеи? .. любая помощь очень ценится

1 Ответ

0 голосов
/ 29 августа 2009

Вам нужно поместить атрибут сборки XmlConfigurator в библиотеку классов, которая упаковывает log4net. Вы можете сохранить файл log4net.config в корневом каталоге вашего веб-приложения.

Атрибут сборки XmlConfigurator читается при первой инициализации log4net. Log4net сканирует вызывающую сборку, чтобы найти атрибут.

...