programing

패키지 내의 모든 클래스에서 로깅을 억제하도록 로그백 구성

showcode 2023. 3. 16. 22:00
반응형

패키지 내의 모든 클래스에서 로깅을 억제하도록 로그백 구성

모든 debug level 문을 기록하는 콘솔용 logback.xml이 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
  <configuration>
    <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%t] --- %-40.40logger{39} : %m%n%wex"/>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>DEBUG</level>
      </filter>
      <encoder>
        <pattern>${CONSOLE_LOG_PATTERN}</pattern>
      </encoder>
    </appender>
    <root level="DEBUG">
      <appender-ref ref="CONSOLE"/>
    </root>
  </configuration>
</xml>

이제 특정 패키지의 모든 로거로부터의 로깅을 억제하도록 수정하겠습니다.

예를 들어 org.apache에 속하는 클래스의 모든 INFO 수준 로그를 표시하지 않도록 합니다.사육사

발견된 솔루션 중 하나는 여기에 나와 있는 것과 유사한 커스텀필터를 만드는 것입니다.로그백: 개의 추가, 여러 개의 로거, 서로 다른 레벨. 하지만 정말 그걸 위해 자바(java)를 쓸 필요가 있을까요?

Comparing this problem to log4j, this can be easily accomplished by following  - 
log4j.logger.org.apache.zookeeper=WARN, CONSOLE

잘 부탁드립니다.

커스텀 필터가 필요했던 링크와 달리 1개의 Appender만 있거나 모든 Appender가 동일한 경우 다음과 같이 동작합니다.

<configuration>
  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>...</pattern>
    </encoder>
  </appender>
  <root level="DEBUG">
    <appender-ref ref="CONSOLE"/>
  </root>
  <logger name="org.apache.zookeeper" level="WARN"/>
</configuration>

난 그렇게 생각하지 않아.ThresholdFilter원본에서는 BTW를 추가하는 것이었고 XML은 유효하지 않습니다(없음).<xml/>태그 지정).

또, Spring Boot 를 사용하고 있는 경우는, appender 패턴이 디폴트와 매우 비슷하기 때문에, 다음과 같이 할 수 있습니다.

<configuration>
  <include resource="org/springframework/boot/logging/logback/base.xml"/>
  <logger name="org.apache.zookeeper" level="WARN"/>
</configuration>

언급URL : https://stackoverflow.com/questions/24075976/configuring-logback-to-suppress-logging-from-all-classes-inside-a-package

반응형