Quarkus中@LoggerName注解未生效,日志名称不符合预期
Quarkus @LoggerName注解未按预期工作问题
测试Quarkus日志功能时,创建了一个简单的Hello World应用,发现@LoggerName注解未按预期工作:
- 自定义类MyCustomLogger中,使用
@LoggerName("foo.bar.logger")标注的Logger实例,输出日志时仍以类全限定名org.acme.customlogger.MyCustomLogger作为日志名称,而非指定的foo.bar.logger; - 即使在application.properties中将
foo.bar.logger的日志级别设为ERROR,INFO级别的日志仍能正常输出。
以下是相关代码、配置及日志输出:
自定义日志类
package org.acme.customlogger; import org.jboss.logging.Logger; import io.quarkus.arc.log.LoggerName; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; @ApplicationScoped public class MyCustomLogger { @LoggerName("foo.bar.logger") Logger logger; @Inject Logger log; public void log() { logger.info("loggername"); log.info("regular inject"); } }
测试类
package org.acme; import org.acme.customlogger.MyCustomLogger; import org.junit.jupiter.api.Test; import io.quarkus.test.junit.QuarkusTest; import jakarta.inject.Inject; @QuarkusTest public class CustomLoggerTest { @Inject MyCustomLogger myCustomLogger; @Test public void quarkus_log_test() { myCustomLogger.log(); } }
日志输出
Oct 12, 2024 10:48:33 AM org.acme.customlogger.MyCustomLogger log INFO: loggername Oct 12, 2024 10:48:33 AM org.acme.customlogger.MyCustomLogger log INFO: regular inject
POM配置
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.acme</groupId> <artifactId>code-with-quarkus</artifactId> <version>1.0.0-SNAPSHOT</version> <properties> <compiler-plugin.version>3.13.0</compiler-plugin.version> <maven.compiler.release>21</maven.compiler.release> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <quarkus.platform.artifact-id>quarkus-bom</quarkus-platform.artifact-id> <quarkus.platform.group-id>io.quarkus.platform</quarkus-platform.group-id> <quarkus.platform.version>3.15.1</quarkus-platform.version> <skipITs>true</skipITs> <surefire-plugin.version>3.3.1</surefire-plugin.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-rest</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-rest-jackson</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-arc</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> </dependencies> <build> <plugins> <plugin> <groupId>${quarkus.platform.group-id}</groupId> <artifactId>quarkus-maven-plugin</artifactId> <version>${quarkus.platform.version}</version> <extensions>true</extensions> <executions> <execution> <goals> <goal>build</goal> <goal>generate-code</goal> <goal>generate-code-tests</goal> <goal>native-image-agent</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>${compiler-plugin.version}</version> <configuration> <parameters>true</parameters> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire-plugin.version}</version> <configuration> <systemPropertyVariables> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> <maven.home>${maven.home}</maven.home> </systemPropertyVariables> </configuration> </plugin> <plugin> <artifactId>maven-failsafe-plugin</artifactId> <version>${surefire-plugin.version}</version> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> <configuration> <systemPropertyVariables> <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> <maven.home>${maven.home}</maven.home> </systemPropertyVariables> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>native</id> <activation> <property> <name>native</name> </property> </activation> <properties> <skipITs>false</skipITs> <quarkus.native.enabled>true</quarkus.native.enabled> </properties> </profile> </profiles> </project>
应用配置(application.properties)
quarkus.log.level=DEBUG quarkus.log.category."foo.bar.logger".level=DEBUG
补充测试
将配置改为quarkus.log.category."foo.bar.logger".level=ERROR后,仍能看到两条INFO级日志输出:
oct 12, 2024 7:52:50 PM org.acme.customlogger.MyCustomLogger log INFO: loggername Oct 12, 2024 7:52:50 PM org.acme.customlogger.MyCustomLogger log INFO: regular inject
内容的提问来源于stack exchange,提问作者Ben eriksson
相关产品推荐
相关产品推荐

