【问题标题】:Does the Log4net SMTPAppender send email Asynchronously?Log4net SMTPAppender 是否异步发送电子邮件?
【发布时间】:2011-08-24 06:43:57
【问题描述】:

Log4net SMTPAppender 是否异步发送电子邮件?如果没有,我如何异步发送日志邮件?

我的 log4net.config 是:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
  <log4net>
    <appender name="SMTPAppender" type="log4net.Appender.SMTPAppender">
      <authentication value="Basic" />
      <to value="xxx@xx.com" />
      <from value="yyy@xx.com" />
      <username value="yyy@xx.com" />
      <password value="yyy" />
      <subject value="xxx" />
      <smtpHost value="smtp.xx.com" />
      <lossy value="true" />
      <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="WARN" />
      </evaluator>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline%date [%thread] %-5level %logger %newline %message%newline%newline%newline" />
      </layout>
    </appender>
    <root>
      <level value="INFO"></level>
    </root>
    <logger name="MyLogger">
      <level value="INFO"></level>
      <appender-ref ref="SMTPAppender"></appender-ref>
    </logger>
  </log4net>
</configuration>

【问题讨论】:

标签: asp.net log4net


【解决方案1】:

您可以像这样异步调用日志记录方法:

Task.Factory.StartNew(() => log.Info("Message I want to email"));

我实际上是从以下 SO 文章中得到这个建议的:

How do I create an asynchronous wrapper for log4net?

【讨论】:

    【解决方案2】:

    在释放固溶体之前有一个简单的解决方法。

    public class SmtpAsyncAppender : SmtpAppender
    {
        protected override void SendEmail(string messageBody)
        {
            Task.Run(() => base.SendEmail(messageBody));
        }
    }
    

    它假定 SmtpAppender.SendEmail 是线程安全且可重新输入的。它适用于 log4net v1.2.13.0,未来没有理由不使用。

    【讨论】:

      【解决方案3】:

      Log4net 没有内置异步的 appender。如果您需要该功能,则需要编写自己的附加程序。下载 log4net 源代码应该可以帮助您入门...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-05
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多