Java logback 日志记录有条件地发送电子邮件
Java logback logging send email conditionally
我使用的是最新版本的 spring boot。
我在各种 类 中有以下代码。
LOGGER.info(" send email : " + EMAIL); // EMAIL="send_email"
每当使用关键字 "send_email" 生成日志时,我都需要发送电子邮件
我有以下条件可以发送电子邮件
- 仅当有 100 条日志消息时才发送电子邮件,即 100 条日志消息发送一封电子邮件
2) 或如果没有 100 条消息,则每 1 小时发送一次电子邮件。
如何使用 Spring 引导实现此目的?
Spring Boot 默认使用 logback。 SLF4J 只是几个日志框架的外观。
如果您正在使用 logback,您可以自定义 SMTPAppender 以传递 evaluator 参数来决定日志消息是否应由 SMTPAppender 处理。
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="ERROR_MAILER" class="ch.qos.logback.classic.net.SMTPAppender">
<evaluator class="app.Evaluator"> </evaluator>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<root level="INFO">
<appender-ref ref="ERROR_MAILER"/>
</root>
</configuration>
gt.app.Evaluator
package app;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.boolex.EventEvaluatorBase;
public class Evaluator extends EventEvaluatorBase<ILoggingEvent> {
@Override
public boolean evaluate(ILoggingEvent event) throws NullPointerException {
return event.getMessage().contains("THE_KEYWORD_HERE");
}
}
参考:ch.qos.logback.core.net.SMTPAppenderBase
的源代码
另请参阅:ch.qos.logback.core.net.SMTPAppenderBase#checkEntryConditions
我使用的是最新版本的 spring boot。
我在各种 类 中有以下代码。
LOGGER.info(" send email : " + EMAIL); // EMAIL="send_email"
每当使用关键字 "send_email" 生成日志时,我都需要发送电子邮件 我有以下条件可以发送电子邮件
- 仅当有 100 条日志消息时才发送电子邮件,即 100 条日志消息发送一封电子邮件 2) 或如果没有 100 条消息,则每 1 小时发送一次电子邮件。
如何使用 Spring 引导实现此目的?
Spring Boot 默认使用 logback。 SLF4J 只是几个日志框架的外观。
如果您正在使用 logback,您可以自定义 SMTPAppender 以传递 evaluator 参数来决定日志消息是否应由 SMTPAppender 处理。
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="ERROR_MAILER" class="ch.qos.logback.classic.net.SMTPAppender">
<evaluator class="app.Evaluator"> </evaluator>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<root level="INFO">
<appender-ref ref="ERROR_MAILER"/>
</root>
</configuration>
gt.app.Evaluator
package app;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.boolex.EventEvaluatorBase;
public class Evaluator extends EventEvaluatorBase<ILoggingEvent> {
@Override
public boolean evaluate(ILoggingEvent event) throws NullPointerException {
return event.getMessage().contains("THE_KEYWORD_HERE");
}
}
参考:ch.qos.logback.core.net.SMTPAppenderBase
的源代码另请参阅:ch.qos.logback.core.net.SMTPAppenderBase#checkEntryConditions