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

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

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

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


person mark smith    schedule 28.08.2009    source источник
comment
Почему бы не избавиться от класса-оболочки, поместить однострочную конфигурацию в каждый проект и напрямую использовать Log4Net? Конечно, у вас есть зависимость, но в основном это интерфейс ILog. Вы можете избежать этого, используя Dependency Injection, но вам все равно будет мешать статическая оболочка класса.   -  person TrueWill    schedule 28.08.2009


Ответы (1)


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

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

person bryanbcook    schedule 28.08.2009