首页 > 解决方案 > 无法在 quarkus 中使用 log4j2

问题描述

我按照https://quarkus.io/guides/logging中的描述配置了 log4j2 ,但是我使用 org.apache.logging.log4j.LogManager 打印的日志从未出现。

我已经使用 org.jboss.logging.Logger 进行了测试,它可以工作。虽然我可以在这个项目中使用 jboss logger 而不是 log4j2,但我的其他基础项目的一些依赖项正在使用 log4j2。那些日志不见了。所以我希望在quarkus中使用log4j2,但不确定是否可以。

pom依赖

<properties>
    <quarkus-plugin.version>1.9.2.Final</quarkus-plugin.version>
    <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
    <quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
    <quarkus.platform.version>1.9.2.Final</quarkus.platform.version>
  </properties>

  <dependencyManagement>

    <dependencies>
      <dependency>
        <groupId>${quarkus.platform.group-id}</groupId>
        <artifactId>${quarkus.platform.artifact-id}</artifactId>
        <version>${quarkus.platform.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>

  </dependencyManagement>

  <dependencies>

    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-resteasy</artifactId>
    </dependency>

    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-junit5</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>rest-assured</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-resteasy-jackson</artifactId>
    </dependency>

    <dependency>
      <groupId>org.jboss.logmanager</groupId>
      <artifactId>log4j2-jboss-logmanager</artifactId>
    </dependency>

    <dependency>
      <groupId>com.rxnetworks.commons</groupId>
      <artifactId>rxn-commons-utility</artifactId>
      <version>1.1.0</version>
    </dependency>

    <dependency>
      <groupId>com.rxnetworks.commons</groupId>
      <artifactId>rxn-commons-time</artifactId>
      <version>2.2.2</version>
    </dependency>

    <dependency>
      <groupId>org.influxdb</groupId>
      <artifactId>influxdb-java</artifactId>
      <version>2.20</version>
    </dependency>

    <dependency>
      <groupId>com.rxnetworks.commons</groupId>
      <artifactId>rxn-commons-timeseries</artifactId>
      <version>1.0.5</version>
    </dependency>

    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>3.5.13</version>
      <scope>test</scope>
      <type>jar</type>
    </dependency>

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>28.2-jre</version>
      <type>jar</type>
    </dependency>

  </dependencies>

代码示例:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class LogTest
{
  private static final Logger LOG = LogManager.getLogger();  // With log4j2 Logger, no logs show up
  // private static final org.jboss.logging.Logger LOG = org.jboss.logging.Logger.getLogger(LogTest.class);           // If change to jboss Logger, it works
  public void test() {
      LOG.info("test log4j2");
  }
}

标签: log4j2quarkus

解决方案


您的应用程序的日志级别是什么?

如果它大于 INFO,则不会记录信息日志。

作为参考,您可以通过以下链接。

https://logging.apache.org/log4j/log4j-2.3/manual/customloglevels.html


推荐阅读