すべてのロギングに SLF4J/logback を使用するように Tomcat を構成しました。server/lib/logback.xml に SMTPAppender を設定しました。エラーごとにメールを送信していますが、すべて問題ないようです。しかし、Tomcat をシャットダウンすると、次のエラーが表示されます。
13:44:14,431 |-INFO in ch.qos.logback.classic.net.SMTPAppender[ERROR_EMAIL] - About to send out SMTP message "ERROR: o.a.c.l.WebappClassLoader - The web application [] appears to have started a thread named [logback-1] but has failed to stop it. This is very likely to create a memory leak."
13:44:14,446 |-ERROR in ch.qos.logback.classic.net.SMTPAppender[ERROR_EMAIL] - Error occurred while sending e-mail notification. javax.mail.MessagingException: IOException while sending message;
nested exception is:
javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;
boundary="----=_Part_2_1458580013.1444423454431"
at javax.mail.MessagingException: IOException while sending message
at at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1177)
at at javax.mail.Transport.send0(Transport.java:195)
at at javax.mail.Transport.send(Transport.java:124)
at at ch.qos.logback.core.net.SMTPAppenderBase.sendBuffer(SMTPAppenderBase.java:394)
構成は次のようになります。
<appender name="ERROR_EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<!-- guarantees that only logs of ERROR will be emailed -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<asynchronousSending>true</asynchronousSending>
<includeCallerData>true</includeCallerData>
<smtpHost>xyz.company.com</smtpHost>
<smtpPort>25</smtpPort>
<STARTTLS>false</STARTTLS>
<to>me@company.com</to>
<from>administrator@company.com</from>
<subject>ERROR: %logger{20} - %m</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %-5level %logger{35} - %message%n</pattern>
</layout>
</appender>
すべての電子メールは、シャットダウンの数分前に実際に送信されました。エラーメッセージは、サーバーをシャットダウンしたときにのみ表示されます。mail.jar (バージョン 1.4.5) と javax.mail-1.5.4.jar を試しました。
Windows 7 でサービスとして Java 7 JDK を使用して Tomcat 7 を実行しています。SLF4J 1.7.12 と logback 1.1.3 を使用しています。Web アプリは 1 つしかなく、メール jar が含まれていません (クラス ローダーの問題をテストするために web アプリの lib フォルダーに mail.jar ファイルを配置しましたが、エラー メールに本文がありません)。
そもそもなぜmimeエラーが発生するのかを理解しようとしましたが、失敗しました。activation.jar バージョン 1.1 を追加しようとしましたが、役に立ちませんでした。
これを投稿していて、炎上が予想されるので、エラーをログに記録し、発生している可能性のある web-inf/lib jar の競合を排除するだけの非常に単純な Web アプリを作成する必要があると考えています。また、送信後にアペンダーをフラッシュさせ、ni 非同期モードを送信しないようにする方法があるかどうかを確認する必要があります。しかし、それまでの間、何か助けていただければ幸いです。