回退修改“自定义日志过滤器”中的日志级别

时间:2019-09-18 23:46:13

标签: java logging logback

我的目标是捕获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:不确定我的方法是否正确

1 个答案:

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