web-dev-qa-db-ja.com

パッケージ内のすべてのクラスからのロギングを抑制するためのログバックの構成

すべてのデバッグレベルステートメントをログに記録する、コンソール用のこの完全に機能する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.zookeeperに属するクラスからのすべてのINFOレベルのログを抑制したいとします

私が見つけた解決策の1つは、ここに示されている方法に似たカスタムフィルターを作成することでした- logback:2つのアペンダー、複数のロガー、異なるレベル しかし、私は本当にJavaを書く必要がありますか?

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

前もって感謝します!。

24
San

アペンダーが1つしかない場合(カスタムフィルターが必要な link とは異なる場合)、またはすべてのアペンダーが同じ場合、これは機能するはずです。

<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を使用している場合、アペンダーパターンはデフォルトに非常に似ているため、おそらくこれを行うことができます。

<configuration>
  <include resource="org/springframework/boot/logging/logback/basic.xml"/>
  <logger name="org.Apache.zookeeper" level="WARN"/>
</configuration>
30
Dave Syer