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

如何过滤ActiveMQ Artemis审计日志输出的指定属性?

在ActiveMQ Artemis审计日志中打印选定属性的解决方案

默认审计日志确实依赖CoreMessage.toString()输出全量属性,导致日志冗长,但你可以通过以下几种方式实现自定义输出:

  • 自定义AuditLogger实现
    这是最直接且推荐的方案。你可以实现org.apache.activemq.artemis.core.server.audit.AuditLogger接口,重写日志相关方法(比如logSend、logConsume等),在方法中仅提取你需要的属性(如message ID、目标地址、用户标识等)进行输出。
    实现后,在broker.xml中配置你的自定义类替换默认审计日志器:

    <audit-logging>
      <audit-logger class-name="com.yourorg.CustomAuditLogger"/>
      <!-- 其他审计配置 -->
    </audit-logging>
    
  • 通过日志框架自定义解析布局
    如果审计日志是通过SLF4J桥接至Logback/Log4j等框架,你可以自定义日志布局来解析CoreMessage.toString()的输出,过滤出需要的字段。比如用Logback的自定义Converter,从日志字符串中提取特定属性后再输出。这种方式无需修改Artemis核心代码,但依赖字符串解析,维护性稍弱。

  • 扩展CoreMessage(不推荐)
    虽然可以继承CoreMessage并重写toString()方法,但需要替换Broker中的消息实现类,侵入性强且容易引发兼容性问题,不建议采用。

最稳妥的方案是自定义AuditLogger,既能精准控制输出内容,也符合Artemis的扩展设计。

内容的提问来源于stack exchange,提问作者la00

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 16:09:52