我的目标是捕获org.hibernate.engine.jdbc.spi.SqlExceptionHelper引发的错误并将其记录为警告
CustomLoggingFilter.java
package com.example.service;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;
import java.util.Arrays;
import java.util.List;
public class CustomLoggingFilter extends Filter<ILoggingEvent> {
private final String exceptionClassName = "org.hibernate.engine.jdbc.spi.SqlExceptionHelper";
public CustomLoggingFilter() {
}
@Override
public FilterReply decide(final ILoggingEvent event) {
if (event.getLoggerName().equals(exceptionClassName)) {
return FilterReply.DENY;
}
return FilterReply.NEUTRAL;
}
}
我的xml配置
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="SqlAppender" class="ch.qos.logback.core.ConsoleAppender">
<filter class="com.example.service.CustomLoggingFilter" />
<encoder>
<pattern>
%-4relative [%thread] %-5level %logger - %msg%n
</pattern>
</encoder>
</appender>
<logger name="org.hibernate.engine.jdbc.spi.SqlExceptionHelper" level="ERROR" additivity="false">
<appender-ref ref="SqlAppender"/>
</logger>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
我可以阻止记录该消息,但不确定如何将其记录为警告而不是错误。
P.S:不确定我的方法是否正确
答案 0 :(得分:0)
您似乎已将其当前配置为ERROR?
<logger name="org.hibernate.engine.jdbc.spi.SqlExceptionHelper" level="ERROR" additivity="false">
<appender-ref ref="SqlAppender"/>
</logger>
尝试将其更改为:
<logger name="org.hibernate.engine.jdbc.spi.SqlExceptionHelper" level="WARN" additivity="false">
<appender-ref ref="SqlAppender"/>
</logger>