如何在Spring(logback.xml)中仅过滤特定的查询日志

时间:2019-06-29 09:26:37

标签: java spring filter logback

我正在使用logback-spring.xml文件记录sql结果。而且我还使用“ SqlSessionTemplate”作为常见的jdbcTemplate来编写sql查询并从数据库中获取数据。 在这种情况下,我需要排除一些日志,因为它有很多数据,这些数据是在服务器启动时加载的,并且无用。但是如上所述,我使用相同的模板,所以我不知道如何仅从日志中过滤该查询。 我在制作如下所示的拦截器时尝试过滤它。

logback-spring.xml

<appender name="STDOUT-SQL-RESULTSET" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="com.common.interceptor.LogbackInterceptor" />
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%msg%n</pattern>
        </encoder>
</appender>

LogbackInterceptor.java

public class LogbackInterceptor extends Filter<ILoggingEvent> {

    @Override
    public FilterReply decide( ILoggingEvent event ) {
        if (event.getMessage().contains("NOT_SQL_LOG")) {
            return FilterReply.DENY;
        }else{
            return FilterReply.ACCEPT;
        }
    }
}

messageSql.xml

<select id="retrieveMessage" parameterType="String" resultType="Message">
  -- NOT_SQL_LOG
  SELECT blahblah ~~

由于结果有很多行,因此仅跳过了注释行“-NOT_SQL_LOG”,其他查询和结果全部显示在控制台日志中。

当我对EvaluatorFilter感到厌倦时,服务器没有开始留下诸如“ [main] DEBUG org.springframework.boot.devtools.restart.ChangeableUrls-匹配URL以重新加载”的消息

<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
        <evaluator>
            <expression>return message.contains("NOT_SQL_LOG");</expression>
        </evaluator>
        <OnMismatch>NEUTRAL</OnMismatch>
        <OnMatch>DENY</OnMatch>
</filter>

请帮助我过滤不写的特定查询。 谢谢您的提前帮助。

1 个答案:

答案 0 :(得分:0)

我通过添加mdc解决了这个问题