2014-02-17 56 views
5

我正在嘗試使用Logback登錄我的Java應用程序。我相信我有它配置正確,但是當錯誤被記錄Logback SMTPAppender不發送電子郵件

信息在ch.qos.logback.classic.net.SMTPAppender [EMAIL] - 關於送 出SMTP郵件「測試的主要」爲[ [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

不幸的是,我沒有,我用來測試的服務器是由ISP運行的。這是一個有趣的想法,但我可能會嘗試設置自己的服務器進行測試。 – jln646v

+0

我面臨同樣的問題。無法發送電子郵件。我已經使用了與上面相同的代碼。請建議解決方案。 – Rishi

回答

2

這似乎是我使用的SMTP服務器的問題。我將Papercut設置爲本地smtp服務器,我可以看到它收到消息

+0

嗨,你能否進一步解釋一下。我爲三臺服務器設置了相同的記錄器配置,只有一臺不能正常工作。剪紙如何幫助 – saurabheights

+1

剪紙只是一個本地smtp服務器。使用它,我可以看到記錄器在正確的時間正確地發送了郵件請求。知道它不是記錄器不能正常工作,我可以繼續調試爲什麼我的真正的smtp服務器不工作。在這種情況下,它不接受我的IP請求。 – jln646v

+0

謝謝,解決了問題。記錄器沒問題,但gmail阻止一臺服務器,因爲它的安全性 – saurabheights

7

我也遇到了這個問題,並找到了解決方案。要運行以上代碼,您必須做出一些更改:

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

不期望需要' false'。謝謝! – sdoxsee

相關問題