我正在尝试创建一个过滤器来过滤ERROR级别以下的任何日志,并使用这些日志发送电子邮件。 这就是我的logback.xml文件的样子(只是appender部分):
<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,username
和password
属于我在运行应用程序的服务器上创建的用户。
它似乎不起作用 - 没有发送电子邮件。
但是,当我为另一台服务器参数,即smtpHost = smtp.gmail.com
时,我会按预期收到电子邮件。
我想这意味着我在服务器上配置postfix的方式出了问题。
我很乐意在这里发布main.cf
文件中的任何信息(我根本不想发布所有信息)。
答案 0 :(得分: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
如果是这样,您可能希望将SMTPAppender的localhost
属性设置为合理的值。顺便说一下,${username}
可能不应该用于为后缀设置<from>
和<username>
。
BYW,将debug
元素的<configuration>
属性设置为true
几乎总是一个好主意,以便在控制台上查看logback的内部消息。如:
<configuration debug="true">...</configuration>