2012-06-30 2 views
1

Я занимаюсь разработкой базовой библиотеки dll, где у меня есть библиотека классов. Я хочу использовать log4net для включения регистрации для исключений. У меня есть файл app.config в библиотеке классов, где я дал настройки для log4net. Однако, когда я тестирую библиотеку классов, log4net не создает журналы, пока я не добавлю app.config в вызывающий проект, несмотря на факт что я добавил [сборка: log4net.Config.XmlConfigurator (Watch = true)] в сборке libinfo's assemblyinfo.cs, и я использую log4net.ILog logger = log4net.LogManager.GetLogger (typeof (ErrorHandler)), где ErrorHandler - это имя класса моей классной библиотеки, где обрабатываются функции вызова log4net. Все идеи о том, что происходит не так?Параметры конфигурации log4net

Во-вторых, я хочу, чтобы пользователи моей библиотеки DLL просто передали местоположение, где они хотят создавать журналы, и хотят ли они создавать журналы в средствах просмотра событий или в файлах журналов из своего app.config? Они не будут обрабатывать другие настройки log4net.

Любые предложения или фрагменты кода для первой проблемы и второй проблемы?

ответ

1

Только основной файл app.config активен для приложения .Net. Ваш конфигурационный файл библиотеки просто игнорируется. Либо вы переносите свои настройки в основной файл конфигурации, либо используете внешний файл конфигурации для log4net. Вы настроить его, то, например, как это (при условии, вы называете это log4net.config):

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

Пожалуйста, обратите внимание, что структура конфигурационного файла немного отличается:

<?xml version="1.0" encoding="utf-8" ?> 
<log4net> 
    <appender name="YourAppender" type="..." > 
     .... 
    </appender> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="YourAppender" /> 
    </root> 
</log4net> 

Что касается вашего второго Проблема: я не уверен, насколько это необходимо. Является ли это просто переключением с файла appender на приложение журнала событий? В зависимости от вашего ответа вы можете рассмотреть два варианта подготовки к файлам конфигурации (например, file.log4net и eventlog.log4net) и прочитать конфигурацию по мере необходимости (в этом случае вы не можете использовать этот атрибут: вы вызываете метод Configure() напрямую) или если ваши требования Вы можете даже сложнее настроить log4net programatically.

Смежные вопросы