如何将电子邮件地址作为参数从 C# 代码传递到 log4net smtp appender

How to pass email address as parameter from C# code to 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");

您可以获取 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(); 
            }
        }