1

このコードを使用して 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 にシャッフルされますが、それでも問題ありません。

しかし残念なことに、私のメール アカウントには、件名が「ERROR myLogger myMessage8」で本文が同じメールが 10 件あります。

ERROR myLogger

myMessage6

したがって、10 通のメールを送信する代わりに、そのうちの 1 通を 10 回送信します。さらに悪いことに、そのメールの件名と本文は互いに対応していません。

10 通の電子メールはすべて、まったく同じ Message-ID を持っています。

logback 1.1.2、1.1.1、および 1.1.0 (mvnrepository から取得) でこれを試しましたが、常に同じ動作を示します。

雇用主の 2 つの異なる 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>

そのためのジラ課題を作成しました: http://jira.qos.ch/browse/LOGBACK-1032しかし、ジラは少し孤立しているように見えます。

4

0 に答える 0