Как передать адрес электронной почты в качестве параметра из кода C# в log4net smtp appender

Я использую 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");

1 ответ

Решение

Вы можете получить 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 = "new@value.com"
                // Activate the options
                smtpappender.ActivateOptions(); 
            }
        }
Другие вопросы по тегам