1

在这种情况下,我使用的是oshisysinfo 库和 spring boot。

我尝试使用将com.github.oshi记录器设置为的 log4j2.xml 文件,INFO但它无法关闭以下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>
...

4

1 回答 1

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 生效。

于 2021-09-01T20:40:43.630 回答