2014-02-17 4 views
5

Я пытаюсь использовать Logback для входа в мое приложение Java. Я считаю, что я его правильно настроен, но когда ошибка регистрируетсяLogback SMTPAppender не отправляет электронную почту

INFO в ch.qos.logback.classic.net.SMTPAppender [EMAIL] - О том, чтобы отправить из SMTP сообщений «Тестирование Main» на [ [email protected]]

печатается на консоль, после этого ничего не печатается, и электронное письмо никогда не принимается. Если я ввешу недопустимый хост smtp или имя пользователя/пароль в конфигурации, он немедленно сработает при попытке отправить, поэтому он устанавливает соединение.

Мой POM:

<repositories> 
    <repository> 
    <id>Java.Net</id> 
    <url>http://download.java.net/maven/2/</url> 
    </repository> 
    </repositories> 
    <dependencies> 

      <dependency> 
       <groupId>javax.activation</groupId> 
       <artifactId>activation</artifactId> 
       <version>1.1.1</version> 
      </dependency> 


      <dependency> 
       <groupId>javax.mail</groupId> 
       <artifactId>mail</artifactId> 
       <version>1.4.7</version> 
      </dependency> 

      <dependency> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-core</artifactId> 
       <version>1.1.1</version> 
      </dependency> 
      <dependency> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-classic</artifactId> 
       <version>1.1.1</version> 
      </dependency> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
       <version>1.7.6</version> 
      </dependency> 


      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>jcl-over-slf4j</artifactId> 
       <version>1.7.6</version> 
      </dependency> 


     </dependencies> 

logback.xml

<configuration> 
    <!-- dump status message on the console as they arrive --> 
    <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" /> 

    <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender"> 
     <smtpHost>mail.optonline.net</smtpHost> 
     <username>xxxxx</username> 
     <password>xxxxxx</password> 
     <smtpPort>587</smtpPort> 
     <to>[email protected]</to> 
     <from>[email protected]</from> 
     <subject>Testing %logger 
     {20} 

     - %m</subject> 

     <layout class="ch.qos.logback.classic.PatternLayout"> 
      <pattern>%d 
       {HH:mm:ss.SSS} 

       [%thread] %-5level %logger 
       {1} 

       -%msg%n 
      </pattern> 
     </layout> 
    </appender> 

    <root level="info"> 
     <appender-ref ref="EMAIL" /> 
    </root> 
</configuration> 

Консоль

10:45:44,596 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 
10:45:44,596 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 
10:45:44,596 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/C:/Users/xxxxx/workspace/logback-test/target/classes/logback.xml] 
10:45:44,650 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 
10:45:44,658 |-INFO in ch.qos.logback.core.joran.action.StatusListenerAction - Added status listener of type [ch.qos.logback.core.status.OnConsoleStatusListener] 
10:45:44,673 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.net.SMTPAppender] 
10:45:44,688 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [EMAIL] 
10:45:44,765 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO 
10:45:44,765 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [EMAIL] to Logger[ROOT] 
10:45:44,766 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 
10:45:44,767 |-INFO in [email protected] - Registering current configuration as safe fallback point 
10:45:44,774 |-INFO in ch.qos.logback.classic.net.SMTPAppender[EMAIL] - SMTPAppender [EMAIL] is tracking [1] buffers 
exiting 
10:45:44,791 |-INFO in ch.qos.logback.classic.net.SMTPAppender[EMAIL] - About to send out SMTP message "Testing Main" to [[email protected]] 
10:45:44,791 |-INFO in ch.qos.logback.classic.net.SMTPAppender[EMAIL] - About to send out SMTP message "Testing Main" to [[email protected]] 

Это код, который работает, чтобы произвести мои ошибки тестирования

logger.error("Entering app"); 
logger.error("exiting app"); 

System.out.println("exiting"); 

Любая помощь отладки этой проблемы было бы весьма признателен Спасибо

+1

У вас есть доступ к журналам сервера smtp, отправляющим письма? Возможно, ошибка возникает в этой системе. –

+0

К сожалению, я этого не делаю, сервер, который я использую для тестирования, запускается провайдером. Это интересная идея, хотя я могу попробовать настроить собственный сервер для тестирования. – jln646v

+0

Я столкнулся с той же проблемой. Не удалось отправить электронную почту. Я использовал тот же код, что и выше. Пожалуйста, предложите решение. – Rishi

ответ

2

Это, кажется, была проблема с сервером SMTP, который я использовал. Я устанавливаю Papercut как локальный smtp-сервер, и я вижу, что он получает сообщения

+0

Привет, не могли бы вы объяснить дальше. Я настроил ту же конфигурацию регистратора для трех серверов, и только один не работает. Как papercut помогает – saurabheights

+1

Papercuts - это всего лишь локальный smtp-сервер. Используя это, я видел, что регистратор правильно запускал запросы почты в нужное время. Зная, что это не то, что журнал не работает правильно, я мог бы перейти к отладке, почему мой настоящий SMTP-сервер не работал. В этом случае он не принимал запросы от моего IP-адреса. – jln646v

+0

Спасибо, проблема решена. Logger был в порядке, но gmail предотвращал один сервер из-за его безопасности. – saurabheights

7

Я также столкнулся с этой проблемой и нашел решение. Чтобы выполнить код выше, вы должны внести некоторые изменения:

1. Add `<STARTTLS>true</STARTTLS>` in your configuration 
2. Add <asynchronousSending>false</asynchronousSending> 
+2

не ожидал необходимости ' false'. Благодаря! – sdoxsee

Смежные вопросы