2015-10-09 7 views
1

Я настроил Tomcat использовать SLF4J/logback для всех протоколов. Я установил SMTPAppender в server/lib/logback.xml. Он отправляет электронное письмо за ошибку, и все кажется прекрасным. Но когда я выключаю Tomcat, я получаю следующее сообщение об ошибке:Logback SMTP Appender Memory Leak Under 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>[email protected]</to> 
     <from>[email protected]</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.

Я запускаю Tomcat 7 с Java 7 JDK, на Windows 7 в качестве сервиса. Я использую SLF4J 1.7.12 и logback 1.1.3. Существует только одно веб-приложение, и в нем нет почтового ящика (я поместил файл mail.jar в папку lib веб-приложений для проверки на проблемы загрузчика классов, но тогда электронные письма с ошибкой не имеют тела)

Я пробовал и не смог понять, почему в первую очередь возникает ошибка mime. Я попробовал добавить version.jar версии 1.1, но это не помогло.

Теперь, когда я отправляю это и ожидаю некоторого пыла, я думаю, что я должен создать очень простое веб-приложение, которое просто регистрирует ошибку и устраняет любые конфликты в банке web-inf/lib, которые могут происходить , Кроме того, мне нужно выяснить, есть ли способ заставить appender сбросить флажок после отправки и попытаться не отправлять ni асинхронный режим. Но я ценю любую помощь в то же время.

ответ