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

AbstractRequestLoggingFilter的afterRequest方法接收message被截断如何解决

问题根因

AbstractRequestLoggingFilter 内置了请求负载的最大长度限制,不同Spring版本默认值通常为50/1024字节,当请求体长度超过该阈值时,类内部生成message参数时就会自动截断,因此你在afterRequest方法拿到的入参本身就已经是被裁剪后的内容。

修复方案

你只需要调整该Filter的maxPayloadLength参数到符合你业务需求的大小即可,根据你的配置方式选择对应操作:

  • 如果你使用Java Config注册Filter
@Bean
public AbstractRequestLoggingFilter requestLoggingFilter() {
    // 若你使用官方默认实现类CommonsRequestLoggingFilter,直接初始化该类即可
    CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
    // 原有配置保持不变,比如是否开启payload、query打印等
    filter.setIncludePayload(true);
    filter.setIncludeQueryString(true);
    // 重点:设置最大负载长度,以下示例设置为1MB,可按实际需求调整,单位为字节
    filter.setMaxPayloadLength(1024 * 1024);
    return filter;
}

如果是你自定义类继承了AbstractRequestLoggingFilter,可以直接在自定义类的构造方法或者初始化逻辑中调用setMaxPayloadLength方法设置阈值。

  • 如果你使用XML配置注册Filter
<bean id="requestLoggingFilter" class="org.springframework.web.filter.CommonsRequestLoggingFilter">
    <property name="includePayload" value="true"/>
    <property name="maxPayloadLength" value="1048576"/>
    <!-- 保留其他原有配置项 -->
</bean>

额外排查点

如果调整该参数后仍然存在截断,可依次排查两个位置:

  1. 存储请求日志的数据库对应字段长度是否足够
  2. 你使用的消息队列是否有单条消息大小限制

内容的提问来源于stack exchange,提问作者Артур Вартанян

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:09:01