Как передать адрес электронной почты в качестве параметра из кода 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();
}
}