Как настроить log4net с помощью System.Configuration.Configuration - PullRequest
2 голосов
/ 04 марта 2011

Я разработал библиотеку, которая используется архитектурой надстроек в другом приложении.Моя библиотека использует log4net для ведения журнала.

Это отлично работает при тестировании, поскольку местоположение файла app.config может быть разрешено, а log4net настраивается с помощью:

log4net.Config.XmlConfigurator.Configure();

При загрузке как надстройкав этом случае невозможно разрешить конфигурацию приложения, используя этот метод.

Один из вариантов - настроить log4net с использованием конфигурации, передаваемой через архитектуру надстройки.Конфигурация, которая может использоваться, похожа на результаты следующего:

string asmFile = System.Reflection.Assembly.GetExecutingAssembly().Location;
System.Configuration.Configuration dllConfig = System.Configuration.ConfigurationManager.OpenExeConfiguration(asmFile);

Как можно System.Configuration.Configuration использоваться с log4net.Config.XmlConfigurator?

Я вижу соответствующий ConfigurationSection из конфигурации, но не вижу способа легко получить ILoggerRepository или XmlElement, требуемый для XmlConfigurator.Configure () .

System.Configuration.ConfigurationSection configSection = configuration.GetSection("log4net");

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Это лучшее, что я придумала на сегодняшний день, и оно не кажется особенно надежным.

if (configuration.HasFile)
{
        System.IO.FileInfo configFileInfo = new System.IO.FileInfo(configuration.FilePath);
        log4net.Config.XmlConfigurator.Configure(configFileInfo);
}

Я задумывался об использовании XmlSerializer для записи конфигурации в XmlDocument и последующей передачи этого XmlElement в Configure, но мне не удалось получить сериализацию конфигурации.

0 голосов
/ 04 марта 2011

Я не могу контролировать, как они потреблять его (кроме API I опубликовать), но необходимо предоставить метод для них, чтобы настроить его.

Наша оболочка log4net находится в DLL. Проекты, использующие эту среду ведения журналов, просто должны добавить блок конфигурации log4net в файл конфигурации своих веб-сервисов / клиентов.

Кроме того, программы должны вызывать это при запуске:

    XmlConfigurator.Configure();
...