Logback SMTPAppender会混合邮件

时间:2014-11-20 14:20:00

标签: java logback smtpappender

我使用此代码发出10条错误消息:

final Logger log = LoggerFactory.getLogger("myLogger");
for(int i = 0; i<10; i++)
   log.error("myMessage" + i);

我配置logback.xml(见下)写入控制台并发送电子邮件。控制台说:

17:56:21.172 [http-bio-8443-exec-1] ERROR myLogger - myMessage0
17:56:21.174 [http-bio-8443-exec-1] ERROR myLogger - myMessage1
17:56:21.174 [http-bio-8443-exec-1] ERROR myLogger - myMessage2
17:56:21.174 [http-bio-8443-exec-1] ERROR myLogger - myMessage3
17:56:21.174 [http-bio-8443-exec-1] ERROR myLogger - myMessage4
17:56:21.174 [http-bio-8443-exec-1] ERROR myLogger - myMessage5
17:56:21.174 [http-bio-8443-exec-1] ERROR myLogger - myMessage6
17:56:21.174 [http-bio-8443-exec-1] ERROR myLogger - myMessage7
17:56:21.175 [http-bio-8443-exec-1] ERROR myLogger - myMessage8
17:56:21.175 [http-bio-8443-exec-1] ERROR myLogger - myMessage9

这是完美的。 此外ch.qos.logback.classic.ViewStatusMessagesServlet显示我的10行电子邮件

INFO | SMTPAppender | About to send out SMTP message "ERROR myLogger myMessageNNN" to [xxx@xxx.yyy.com]

N在0到9之间,但电子邮件的顺序被拖洗到7-0-9-2-8-1-4-3-5-6,这仍然可以。

但不幸的是,在我的电子邮件帐户中,我发现了10封相同的电子邮件,所有邮件都是主题为“ERROR myLogger myMessage8”和正文

ERROR myLogger

myMessage6

因此,不是发送10封电子邮件,而是发送10封电子邮件。更糟糕的是,该电子邮件的主题和正文彼此不对应。

所有10封电子邮件都具有完全相同的消息ID。

我尝试使用logback 1.1.2,1.1.1和1.1.0(从mvnrepository获取)并且它总是显示相同的行为。

我用我雇主的两个不同的smtp服务器试了一下,我确实通过Thunderbird和SquirrelMail访问了它们,但这没什么区别。

如果我在每个log.error之前执行“Thread.sleep(1000)”,一切都按预期工作,电子邮件完全正常。

<configuration scan="true" scanPeriod="1 minute">
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>ERROR</level>
    </filter>
    <smtpHost>xxx.yyy.com</smtpHost>
    <to>xxx@xxx.yyy.com</to>
    <from>xxx@xxx.yyy.com</from>
    <subject>%-5level %logger{26} %m{50}</subject>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>%level %logger%n%n%m%n%n%ex</pattern>
    </layout>
  </appender>
  <root level="INFO">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="EMAIL"/>
  </root>
</configuration>

我为此创建了一个jira问题:http://jira.qos.ch/browse/LOGBACK-1032但是jira看起来有点像孤儿。

0 个答案:

没有答案
相关问题