【问题标题】:How to change the logging level in an included library?如何更改包含库中的日志记录级别?
【发布时间】:2021-09-01 01:05:09
【问题描述】:

在这种情况下,我使用的是 oshi sysinfo 库,以及 spring boot。

我尝试使用将com.github.oshi 记录器设置为INFO 的log4j2.xml 文件,但它无法关闭以下DEBUG 级别的消息。

...
04:33:57.687 [Thread-3] DEBUG oshi.util.FileUtil - Reading file /sys/devices/system/cpu/cpu10/cpufreq/scaling_cur_freq
04:33:57.687 [Thread-3] DEBUG oshi.util.FileUtil - Reading file /sys/devices/system/cpu/cpu10/cpufreq/scaling_cur_freq
/sys/devices/system/cpu/cpu13/cpufreq/scaling_cur_freq
04:33:57.707 [Thread-3] DEBUG oshi.util.FileUtil - Reading file 
...

https://github.com/oshi/oshi

log4j2.xml 中的以下设置不起作用:

  <category name="oshi">
    <priority value="OFF"/>
  </category>

  <Loggers>
    <!-- avoid duplicated logs with additivity=false -->
    <Logger name="oshi" level="info" additivity="false">
      <AppenderRef ref="LogToRollingFile"/>
    </Logger>
    <Root level="info">
      <AppenderRef ref="LogToConsole"/>
    </Root>
  </Loggers>

pom.xml 包含:

...
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
    </dependency>
...

【问题讨论】:

    标签: log4j2 oshi


    【解决方案1】:

    这是一个愚蠢的问题。

    我确实设置了 log4j2.xml 配置,但那是无效的,因为我包含了一个包含 logback 的 spring starter。所以 slf4j-over-logback 配置生效了。 Oshi 库使用 slf4j。

    所以我排除了spring-boot-starter-logging jar并包含了spring log4j2 starter,如下所示,问题就消失了:

        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-jdbc</artifactId>
          <exclusions>
            <exclusion>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-log4j2</artifactId>
          <version>2.5.4</version>
        </dependency>
    
    

    log4j2 配置现在通过 slf4j-log4j 桥接 jars 生效。

    【讨论】:

      猜你喜欢
      • 2014-08-21
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 2014-09-01
      • 2023-04-11
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多