Quarkus KeyValueStructuredArgument配置无效,如何解决?
解决Quarkus日志JSON格式化中kv参数未生效的问题
你在使用Quarkiverse的logging-json扩展输出JSON日志时,调用kv()结构化参数后,日志却只输出了该方法的toString()结果,没有生成包含自定义键值对的预期JSON结构。
解决步骤:
确认依赖配置
确保项目依赖中正确引入了logging-json扩展,版本要和你的Quarkus版本匹配:
Maven示例:<dependency> <groupId>io.quarkiverse.loggingjson</groupId> <artifactId>quarkus-logging-json</artifactId> </dependency>启用JSON日志格式化
在application.properties里配置日志输出格式为JSON:# 控制台日志用JSON格式 quarkus.log.console.format=json # 若有文件日志,同样配置 quarkus.log.file.format=json检查日志级别与上下文
确保INFO级别日志未被过滤,且日志上下文没有被其他非JSON格式化器覆盖。排查依赖冲突
如果项目里还引入了其他日志扩展(如logging-gelf),可能会和logging-json冲突,导致JSON格式化失效,需要清理冲突依赖。升级兼容版本
旧版本的logging-json可能存在参数解析bug,建议升级到与Quarkus主版本匹配的最新稳定版。
验证示例
配置完成后重新运行项目,执行你的日志代码:
import static io.quarkiverse.loggingjson.providers.KeyValueStructuredArgument.kv; LOG.info("Some Error!", kv("key", "value"));
即可得到包含自定义键值对的JSON日志:
{ "message": "Some Error!", "key": "value", "timestamp": "2024-05-20T12:34:56.789Z", "level": "INFO" }
内容的提问来源于stack exchange,提问作者Toni26
相关产品推荐
相关产品推荐

