【发布时间】: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