You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让quarkus-logging-json不再包裹AWS SDK EmfMetricLoggingPublisher的日志输出

如何让quarkus-logging-json不再包裹AWS SDK EmfMetricLoggingPublisher的日志输出

我完全懂你遇到的困扰——AWS SDK的EMF指标日志本身是标准的JSON格式,结果被quarkus-logging-json套了一层额外的JSON结构,导致CloudWatch没法正确识别这些指标数据。其实你已经找对方向了,通过给特定日志器配置独立的日志处理器就能解决这个问题,下面是具体的实现方案:

你只需要在Quarkus的配置文件(比如application.properties)里添加以下配置:

# 给EMF日志器指定专属的控制台处理器
quarkus.log.category."software.amazon.awssdk.metrics.publishers.emf.EmfMetricLoggingPublisher".handlers=EMF_CONSOLE
# 关闭继承父处理器,避免同时被默认JSON处理器处理
quarkus.log.category."software.amazon.awssdk.metrics.publishers.emf.EmfMetricLoggingPublisher".use-parent-handlers=false
# 设置专属处理器的日志级别
quarkus.log.handler.console.EMF_CONSOLE.level=INFO
# 配置输出格式为仅打印原始日志消息
quarkus.log.handler.console.EMF_CONSOLE.format=%m%n
# 关键:关闭这个处理器的JSON格式化,禁用包裹逻辑
quarkus.log.handler.console.EMF_CONSOLE.json=false

配置说明:

  • 第一行:明确指定EmfMetricLoggingPublisher这个日志器使用我们自定义的EMF_CONSOLE处理器,而不是默认的JSON处理器
  • 第二行:use-parent-handlers=false确保这个日志器的输出不会被父级的日志处理器重复处理,避免同时输出原始JSON和被包裹后的版本
  • 第三行:匹配EMF日志发布器的默认输出级别(INFO),确保不会漏掉日志
  • 第四行:%m%n表示只输出日志的原始消息内容和换行符,去掉所有额外的日志元数据
  • 第五行:这是核心配置,关闭该处理器的JSON格式化功能,这样EMF输出的原始JSON就不会被quarkus再套一层结构了

配置完成后,EmfMetricLoggingPublisher输出的日志就会直接是原始的EMF JSON字符串,CloudWatch可以正常解析这些指标数据,而其他日志依然会保持quarkus-logging-json的JSON格式输出,互不影响。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 07:03:03