Настройка приложения Log4Net в другом файле, отличном от основного конфигурационного файла

#log4net

#log4net

Вопрос:

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

Цель состоит в том, чтобы позволить мне опубликовать мое приложение с log4net.config, но не удалять некоторые данные, относящиеся к конкретным клиентам, такие как параметры smtp.

Идея состоит в том, чтобы иметь :

   <logger name="DatabaseLogger">    
    <level value="ALL" />
    <appender-ref ref="AdoNetAppender" />
    <appender-ref ref="SmtpAppender" />
  </logger>

 <appender configSource="log4netsmtp.config"/>
 

log4netsmtp.config создается клиентами по соображениям безопасности (с моей помощью) и никогда не изменяется мной.

Извините за мой английский и спасибо, что прочитали меня.

С уважением

Ответ №1:

Вы можете загрузить его через GetManifestResourceStream сборки, чтобы получить ваш файл и обработать его как xml, затем для инициализации вашего регистратора вы можете использовать класс log4net.config.XmlConfigurator и передать ему свой экземпляр XmlElement или добавить свой XmlElement к существующей конфигурации log4net xml:

 Assembly a = Assembly.GetAssembly(this.GetType());
Stream stream = a.GetManifestResourceStream("MyAssembly.ConfigFolder.logger.config");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(stream);
// eventually append, modify, merge, check the xml with other info
XmlConfigurator.Configure(xmlDoc);