2013-12-16 3 views
1

Вот мой сценарий Мне нужно загрузить другой файл app.config, который содержит мои настройки для log4net. В моем проекте я создал класс, который наследуется от IConfigurationReader. Для Methode getSection я загружаю свой файл конфигурации и возвращаю этот раздел.Log4Net IConfigurationReader не работает

Я вижу, что он загружает конфигурационный файл и раздел, но не передает его в тип I, определенный в файле конфигурации.

<common> 
<logging> 
    <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net4"> 
    <arg key="configType" value="FILE-WATCH"/> 
    <arg key="configFile" value="C:\Users\dwarner\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\Config\log4net.config" /> 
    </factoryAdapter> 
</logging> 

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

Спасибо за помощь

ответ

1

Пока вы установите ConfigurationReader на вашем LogManager и нулевой адаптер так перезагружает настройки конфигурации он должен работать. Вам также необходимо убедиться, что ваш IConfigurationReader загружает раздел как собственный DocumentElement:

public class CustomAppConfigurationReader : IConfigurationReader 
{ 
    public object GetSection(string sectionName) 
    { 
     var handler = new ConfigurationSectionHandler(); 
     var xml = LoadConfigData().GetSection(sectionName).SectionInformation.GetRawXml(); 
     var doc = new XmlDocument(); 
     doc.LoadXml(xml); 
     return handler.Create(null, null, doc.DocumentElement); 

    } 

    /// <summary> 
    /// Load configuration data from custom configuration file. 
    /// </summary> 
    public static Configuration LoadConfigData() 
    { 
     var filePath = "C:\\SomeOtheApp.config"; 
     var map = new ExeConfigurationFileMap {ExeConfigFilename = filePath}; 
     var config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 
     return config; 
    } 
} 
Смежные вопросы