2012-06-19 72 views
1

我正在嘗試創建一個appender,它可以篩選ERROR級別以下的所有日誌,併發送帶有這些日誌的電子郵件。 這是我logback.xml文件看起來像(只是附加器部分):Logback appender和Postfix

<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender"> 
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
     <!-- deny all events with a level below ERROR --> 
     <level>ERROR</level> 
    </filter> 
    <smtpHost>${smtpHost}</smtpHost> 
    <smtpPort>${smtpPort}</smtpPort> 
    <STARTTLS>true</STARTTLS> 
    <username>${username}</username> 
    <password>${password}</password> 
    <to>${mailingList}</to> 

    <from>${username}</from> 
    <subject>%logger{20} - %m</subject> 
    <layout class="ch.qos.logback.classic.html.HTMLLayout"/> 
    <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTrackerImpl"> 
      <bufferSize>1</bufferSize> 
    </cyclicBufferTracker> 
</appender> 

哪裏smtpHost爲localhost和usernamepassword屬於我運行應用程序在服務器上創建一個用戶。 它似乎不工作 - 沒有電子郵件發送。

但是,當我爲其他服務器的參數,即smtpHost = smtp.gmail.com,我收到電子郵件按預期。

我想這意味着我在服務器上配置了postfix的方式是錯誤的。 我很樂意在這裏發佈來自main.cf文件的任何信息(我只是不想發佈這一切)。

+0

我不使用自己的logback,但我認爲它可以配置爲發出內部調試信息。我試着啓用它來查看你是否可以得到SMTP appender所看到的實際錯誤。 – Alex

回答

1

這是一個遠投,但這是一個想法。 Posfix通常配置爲拒絕來自不發出有效helo_hostname的發件人的電子郵件。 postfix的main.ch是否具有類似於以下的指令?

smtpd_helo_restrictions = 
     reject_non_fqdn_helo_hostname, 
     reject_invalid_helo_hostname 

smtpd_sender_restrictions = 
     reject_non_fqdn_sender, 
     reject_unknown_sender_domain 

如果是這樣,你可能想的SMTPAppenderlocalhost屬性設置爲一個合理的值。順便說一下,${username}可能不應該用於爲後綴設置<from><username>

BYW,將debug屬性的<configuration>元素設置爲true幾乎總是一個好主意,以便在控制檯上查看logback的內部消息。在:

<configuration debug="true">...</configuration>