我有用于控制台的完美工作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级别日志
我发现的解决方案之一是创建一个自定义过滤器,类似于此处的指示-logback: Two appenders, multiple loggers, different levels。但是我真的需要为此编写Java吗?
Comparing this problem to log4j, this can be easily accomplished by following -
log4j.logger.org.apache.zookeeper=WARN, CONSOLE
提前致谢!。
最佳答案
如果您只有一个附加程序(不同于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
不会添加任何顺便说一句,并且XML无效(没有<xml/>
标记)。另外,如果您使用的是Spring Boot,则附加程序模式看起来与默认模式非常相似,因此您可以执行以下操作:
<configuration>
<include resource="org/springframework/boot/logging/logback/basic.xml"/>
<logger name="org.apache.zookeeper" level="WARN"/>
</configuration>