【问题标题】:Sending email asynchronously using log4j使用 log4j 异步发送电子邮件
【发布时间】:2012-12-18 10:57:56
【问题描述】:

我注意到,当使用 log4j 发送错误电子邮件时,由于 SMTP 协议协商和提交,程序的执行会暂停。

推荐的异步发送错误邮件的方法是什么?

如果错误对进程来说是致命的,这是否会产生影响?在终端异常的情况下,我不希望进程在发送电子邮件之前终止。

【问题讨论】:

  • 对于邮件发送你应该使用多线程环境
  • 就个人而言,this example 帮助了我。 :)
  • @BhavikAmbani,你的意思是我应该创建一个新线程来调用_log.error(...)。如果是这样,那真是个糟糕的主意!
  • @GGeorge,你会注意到我已经为那个问题添加了一个答案 :) 根本没有提到关于那个问题的异步电子邮件。
  • 一点也不,反而会更方便你,条件是你的表现可以提高。

标签: java logging log4j


【解决方案1】:

方法似乎是:

  1. 像往常一样创建您的电子邮件附加程序
  2. AsyncAppender'包裹'它

配置类似于:

<appender name="SmtpAppender" class="org.apache.log4j.net.SMTPAppender">
    <!-- ... -->
</appender>

<appender name="AsyncSmtpAppender" class="org.apache.log4j.AsyncAppender">
    <appender-ref ref="MAIL"/>
</appender>

但是,这并不能解决我对在导致进程中断的致命错误情况下无法发送电子邮件的担忧。有人可以澄清一下吗?

【讨论】:

    【解决方案2】:

    如果您可以切换日志框架,logback 会异步发送电子邮件 (http://logback.qos.ch/manual/appenders.html#SMTPAppender),因此不需要异步包装器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 2015-02-05
      • 1970-01-01
      • 2011-05-06
      • 2011-05-25
      • 2017-07-13
      • 2011-03-25
      相关资源
      最近更新 更多