You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Spring Integration DSL:禁用AbstractMessageHandler重复DEBUG日志

解决Spring Integration DSL log() 重复日志问题

你遇到的这个重复日志问题很常见——原因是LoggingHandler继承自AbstractMessageHandler,而后者的loggingEnabled属性默认是true,会在处理消息时额外输出一条通用的"Handling message..."类日志,和你自定义的日志并存。

直接修改AbstractMessageHandler的日志级别没用的核心原因是:这条额外日志并不是通过AbstractMessageHandler类的Logger输出的,而是由具体实现类(也就是LoggingHandler)的Logger输出的,所以调整父类的日志级别根本不会生效。

正确的解决方案

在你的DSL配置里,直接通过loggingEnabled(false)关闭AbstractMessageHandler层面的日志输出,只保留自定义的日志内容:

.<DataDTO>log(LoggingHandler.Level.DEBUG, "Http Input Flow V2", message -> {
    DataDTO dto = message.getPayload();
    return "Input data: " + dto.toString();
})
.loggingEnabled(false) // 关闭AbstractMessageHandler的默认日志

原理说明

log()方法返回的LoggingHandlerSpec继承自AbstractMessageHandlerSpec,提供了loggingEnabled()方法来直接控制父类AbstractMessageHandlerloggingEnabled属性。设置为false后,就会禁用它在handleMessage方法中输出的通用日志,只保留你自定义的那条日志内容。

这种方式比调整日志级别更精准,不会影响其他AbstractMessageHandler子类组件的日志输出。

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

火山引擎 最新活动