1. controller 中使用
@RestController
@RequestMapping("/question")
@Slf4j
public class QuestionController {
private final static String LOGGER = "recommendFeedBackLog";
/**
* 推荐试题反馈使用的日志
*/
private final static Logger FEEDBACKLOG = LoggerFactory.getLogger(LOGGER);
}
2. 增加日志过滤器
public class RecommendLogFilter extends Filter<ILoggingEvent> {
@Override
public FilterReply decide(ILoggingEvent event) {
if (event.getLoggerName() != null && (event.getLoggerName().equals("recommendFeedBackLog"))) {
return FilterReply.ACCEPT;
}
return FilterReply.DENY;
}
}
- 在
logkback.xml
中配置
<appender name="recommendFeedBackLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="com.tal.storage.core.log.RecommendLogFilter"/>
<file>${catalina.base}/logs/cloud-storage/recommend/cloud-storage_recommend_log.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/cloud-storage/recommend/cloud-storage_recommend_log.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>100</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
也可以用这种方式:
/**
* 定义logger,用于收集发送失败MQ消息
*/
public class SendMessageFailFilter extends AbstractMatcherFilter<ILoggingEvent> {
private String loggerName;
private Level level;
/**
* DENY 立即删除日志事件而不咨询剩余的过滤器
* NEUTRAL 查询列表中的下一个过滤器,如果没有其他过滤器可供参考,则会正常处理日志记录事件
* ACCEPT 立即处理日志事件,跳过其余过滤器的调用
*
* @param event
* @return
*/
@Override
public FilterReply decide(ILoggingEvent event) {
if (event.getLoggerName().contains(loggerName) && level == event.getLevel()) {
return onMatch;
}
return onMismatch;
}
public void setLoggerName(String loggerName) {
this.loggerName = loggerName;
}
public void setLevel(Level level) {
this.level = level;
}
}
<!-- 自定义日志输出器 -->
<appender name="tableData" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="com.tal.log.filter.SendMessageFailFilter">
<loggerName>table-data</loggerName>
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>${catalina.base}/logs/database-data-collection/table-data.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${catalina.base}/logs/database-data-collection/table-data.%d{yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{50}[%M][%L] - %msg%n</pattern>
</encoder>
</appender>