Tomcat 8 当http body 完成写入时记录; ServletOutputStream 关​​闭?阀 %D?

Tomcat 8 Log when http body finishes write; ServletOutputStream closes? Valve %D?

我在 Tomcat 8 中部署了一个 WAR 文件。它正在使用 Spring 引导,这几乎是偶然的。

我想记录客户端完成使用我的 HTTP 响应需要多长时间,因为我的响应主体很大。这意味着过滤器链在很早之前就已完成——有时是在几分钟之前——HttpServletResponse 的 ServletOutputStream 已被客户端完全使用。

Tomcat Valve %D 涵盖这种情况吗? https://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Access_Log_Valve/Attributes 我不确定阅读文档。

如果没有,我该如何捕获它?我基本上想在调用 ServletOutputStream.close() 时记录时间戳,对吗?我该怎么做?

我找到的最佳解决方案是在我的 tomcat (haproxy) 前面放置一个负载平衡器,将其切换为 HTTP 模式,并以这种方式记录。然而,我更喜欢 TCP 路由,因为它对于我的用例来说明显更快。还有其他建议吗?