Quarkus使用Log4J2作为日志实现时log4j2.yml配置被忽略如何解决
Quarkus 生效 log4j2.yml 配置解决方案
你当前已引入的org.jboss.logmanager:log4j2-jboss-logmanager和org.jboss.logmanager:slf4j-jboss-logmanager依赖是正确的基础,仅需补充以下配置即可让src/main/resources/log4j2.yml直接生效,无需通过application.properties配置日志规则。
- 补充Log4j2 YAML格式解析依赖
Log4j2默认不内置YAML配置文件的解析能力,需根据项目包管理工具引入对应依赖:
Maven配置:
Gradle配置:<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.20.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-yaml</artifactId> <version>2.15.2</version> </dependency> </dependencies>dependencies { implementation 'org.apache.logging.log4j:log4j-core:2.20.0' implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2' } - 添加启动参数禁用Quarkus默认日志接管
在JVM启动参数中加入以下两个配置,让Quarkus优先读取Log4j2配置文件:
本地IDE启动时添加到VM options即可,打包后运行示例命令:-Dquarkus.log.manager=false -Dlog4j2.configurationFile=log4j2.ymljava -Dquarkus.log.manager=false -Dlog4j2.configurationFile=log4j2.yml -jar your-quarkus-app-runner.jar - 验证配置生效
可在log4j2.yml中配置自定义日志格式或文件输出规则,启动应用后查看输出是否匹配配置即可。
特殊说明:如果需要打包为GraalVM原生镜像,仅需在
application.properties中添加原生构建参数quarkus.native.additional-build-args=-H:Log4j2Configuration=log4j2.yml即可,无需添加其他日志相关配置。
内容的提问来源于stack exchange,提问作者Marcel Stör
相关产品推荐
相关产品推荐

