すべてのデバッグレベルステートメントをログに記録する、コンソール用のこの完全に機能する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
前もって感謝します!。
アペンダーが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>