2016-04-29 6 views
1

Я использую log4net smtp appender для отправки уведомлений по электронной почте в случае ошибки в приложении. Есть ли способ, которым я могу назначить адрес электронной почты во время выполнения, а не вставлять в файл конфигурации. Файл конфигурации является:Как передать адрес электронной почты как параметр из кода C# в log4net smtp appender

<appender name="LogSmtpAppender" type="log4net.Appender.SmtpAppender"> 
     <authentication value="Basic" /> 
     <to value="" /> 

Я инициализирует регистратор из моего приложения, как:

public static readonly log4net.ILog applicationLog = log4net.LogManager.GetLogger("MyApplication"); 

ответ

0

Вы можете получить Appender и затем изменить конфигурацию, установив свойство, а затем активировать новые опции, такие как :

 // Get the Hierarchy object that organizes the loggers 
     Hierarchy hier = log4net.LogManager.GetRepository() as Hierarchy; 
     var smtpappender = 
       (SmtpAppender)hier.GetAppenders().Where(
        appender => appender.Name.Equals("LogSmtpAppender", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); 

      if (smtpappender != null) 
      { 
       // Change your setting here 
       smtpappender.To = "[email protected]" 
       // Activate the options 
       smtpappender.ActivateOptions(); 
      } 
     }