【问题标题】:How to filter only a specific query log in spring (logback.xml)如何在spring(logback.xml)中仅过滤特定的查询日志
【发布时间】:2019-06-29 09:26:37
【问题描述】:

我正在使用 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 - Matching URLs for reloading”的消息

<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>

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

【问题讨论】:

    标签: java spring filter logback


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-09-17
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 2013-01-28
      相关资源
      最近更新 更多