配置日志备份以禁止来自包内所有类的日志记录

2022-09-01 13:13:13

我有这个完美的工作日志.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:两个追加器,多个记录器,不同级别 。但是我真的需要为此编写java吗?

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

提前致谢!


答案 1

如果您只有一个追加器(与需要自定义过滤器的链接不同),或者所有追加器都相同,这应该有效:

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

我不认为你的原文中添加了任何BTW,并且XML是无效的(没有标签)。ThresholdFilter<xml/>

另外,如果您使用的是Spring Boot,则附加器模式看起来与默认模式非常相似,因此您可能只需执行以下操作:

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

答案 2

推荐