我已将 Tomcat 配置为使用 SLF4J/logback 进行所有日志记录。我在 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 应用程序并且其中没有邮件 jar(我在 Web 应用程序 lib 文件夹中放置了一个 mail.jar 文件以测试类加载器问题,但是错误电子邮件没有正文)
我已经尝试过但未能弄清楚为什么它首先会出现 mime 错误。我尝试添加activation.jar 1.1 版,但没有帮助。
现在,当我发布此内容并预计会发生一些火灾时,我在想我应该创建一个非常简单的 Web 应用程序,该应用程序只记录错误并消除可能发生的任何 web-inf/lib jar 冲突。另外,我需要看看是否有某种方法可以使附加程序在发送后刷新,并尝试不发送 ni 异步模式。但在此期间,我感谢任何帮助。