【问题标题】:Configuring logback to suppress logging from all classes inside a package配置 logback 以禁止从包内的所有类进行日志记录
【发布时间】:2014-07-27 09:04:45
【问题描述】:

我有这个完美工作的 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

提前致谢!

【问题讨论】:

    标签: java logging log4j logback spring-boot


    【解决方案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 没有添加任何内容顺便说一句,并且 XML 无效(没有 &lt;xml/&gt; 标记)。

    另外,如果您使用的是 Spring Boot,则 appender 模式看起来与默认模式非常相似,因此您可以这样做:

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

    【讨论】:

    • 除了创建自定义Filter之外,有没有办法避免配置中包org.apache.zookeeper的所有级别的日志记录
    • level="OFF" 应该这样做。更好的是,您可以在 application.propertieslogging.level.org.apache.zookeeper=OFF 中执行此操作(当我写原始答案时,application.properties 位不可用)
    • &lt;logger name="org.apache.zookeeper" level="WARN"/&gt; 行帮助了我。
    猜你喜欢
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 2011-12-26
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    相关资源
    最近更新 更多