1

ERROR レベル未満のログをフィルタリングし、これらのログを電子メールで送信するアペンダーを作成しようとしています。これは私のlogback.xmlファイルがどのように見えるかです(アペンダー部分のみ):

<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>

smtpHostlocalhost はどこにあり、アプリケーションを実行するサーバー上で作成したユーザーusernamepassword属しています。うまくいかないようです - メールが送信されませんでした。

しかし、別のサーバー、つまり のパラメーターを指定すると、smtpHost = smtp.gmail.com期待どおりにメールが届きます。

これは、サーバー上で postfix を構成した方法に問題があることを意味していると思います。ファイルからの情報をここに投稿できれば幸いmain.cfです (単にすべてを投稿したくはありません)。

4

1 に答える 1

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>

ところで、ほとんどの場合、elementのdebug属性をに設定して、コンソールで logback の内部メッセージを表示することをお勧めします。次のように:<configuration>true

<configuration debug="true">...</configuration>
于 2012-06-19T19:38:30.393 に答える