我正在尝试创建一个附加程序来过滤错误级别以下的任何日志并发送包含这些日志的电子邮件。 这就是我的 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>
其中 smtpHost
是 localhost,用户名
和 密码
属于我在运行应用程序的服务器上创建的用户。
它似乎不起作用 - 没有发送电子邮件。
但是,当我参数化另一台服务器时,即 smtpHost = smtp.gmail.com
,我会按预期收到电子邮件。
我想这意味着我在服务器上配置 postfix 的方式有问题。
我很乐意在此处发布 main.cf
文件中的任何信息(我只是不想发布全部信息)。
最佳答案
虽然可能性不大,但这里有一个想法。 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
如果是这样,您可能需要设置 localhost
SMTPAppender的属性(property)到一个合理的值。顺便说一下,${username}
可能不应该用于设置 <from>
和<username>
用于后缀。
BYW,设置debug
几乎总是一个好主意。 <configuration>
的属性元素至 true
在控制台上查看 logback 的内部消息。如:
<configuration debug="true">...</configuration>
关于java - Logback 附加程序和 Postfix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11104546/