【发布时间】:2022-01-01 20:58:43
【问题描述】:
我一直在尝试找到一种方法来在我的 Spring Boot 应用程序中记录请求的响应正文。我现在已经放弃了这个,只会在返回之前登录每个控制器,因为让它工作的努力(全局,对于所有带有过滤器或请求拦截器的控制器)似乎非常大/过于复杂。
在 python django 项目中,这似乎可以像带有 log.info(response.body) 之类的中间件一样简单。
我是 Java 新手,所以我确信这是有正当理由的,但有人能解释一下为什么吗?
要尝试在 java 中获取响应主体的字符串表示,从 HttpServletResponse 涉及到各种争论,例如 this
【问题讨论】:
-
响应正文可能不容易获得。如果您将 4GB 文件流式传输到客户端怎么办?
HttpServletResponse也是javax.servlet类,所以它不是为了用户友好。基于 Spring 的方法肯定更容易实现,如果您继续进行更多搜索,我相信有人为您完成了艰苦的工作。 -
确实有人完成了艰苦的工作。设法使用
ContentCachingResponseWrapper找到了一个基于过滤器的解决方案来完成这项工作。谢谢