【发布时间】:2017-11-15 19:32:10
【问题描述】:
我正在使用 slf4j 和 logback 来登录我的 java web 应用程序。我需要通过电子邮件发送来自特定类(以下示例中的 MyClass)的信息日志。我在 logback 中配置了一个电子邮件附加程序。其余部分可以放在根记录器设置的任何位置。但是我当前的设置无法发送电子邮件。见下文...
设置:
以下是有关 jar 版本和其他设置的相关信息:
类路径中的 jars:
activation-1.1.jar
jcl-over-slf4j-1.7.25.jar
logback-classic-1.2.3.jar
logback-core-1.2.3.jar
logback-ext-spring-0.1.4.jar
logstash-logback-encoder-4.11.jar
mail-1.4.jar
slf4j-api-1.7.25.jar
类路径中的logback.xml:
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%thread] %-5level %logger{5}:%L - %msg%n</pattern>
</encoder>
</appender>
<appender name="email" class="ch.qos.logback.classic.net.SMTPAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<smtpHost>smtp.server</smtpHost>
<to>code4kix@email.com</to>
<from>do-not-reply@email.com</from>
<subject>code4kix - ${HOSTNAME}: %logger{20} - %m</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d [%thread] %-5level %logger{5}:%L - %msg%n</pattern>
</layout>
<!-- <STARTTLS>true</STARTTLS> -->
<!-- <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker"> -->
<!-- <bufferSize>1</bufferSize> -->
<!-- </cyclicBufferTracker> -->
<!-- <asynchronousSending>false</asynchronousSending> -->
</appender>
<root level="error">
<appender-ref ref="console" />
</root>
<logger name="mypackage.MyClass" level="info" additivity="true">
<appender-ref ref="email"/>
</logger>
问题:
如果我在 MyClass.java 中有 logger.error 语句,电子邮件似乎可以正常发送,但如果它们只有 logger.info,则电子邮件不会发送...尽管将阈值配置为 info!
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyClass
{
private static Logger logger = LoggerFactory.getLogger(MyClass.class);
public void myMethod()
{
logger.error("using this sends the email out");
logger.info("using this doesn't");
}
}
我确实在控制台日志中得到了这个,但电子邮件永远不会发出。可能有什么问题?
SystemOut O 13:18:00,012 |-INFO in ch.qos.logback.classic.net.SMTPAppender[email] - SMTPAppender [email] is tracking [1] buffers
【问题讨论】:
标签: java email logging logback