【发布时间】:2011-01-27 18:29:27
【问题描述】:
我正在尝试在我们基于 Struts 的应用程序中记录 HTTP POST 请求的原始正文,该应用程序在 Tomcat 6 上运行。我在 SO 上找到了一个 previous post,这有点帮助,但接受的解决方案没有在我的情况下正常工作。问题是,我只想在某些情况下记录 POST 正文,并且让 Struts 在记录后解析正文中的参数。目前,在我编写的过滤器中,我可以从 HttpServletRequestWrapper 对象读取和记录正文,但之后 Struts 找不到任何要解析的参数,因此 DispatchAction 调用(取决于请求中的参数之一)失败。
我对 Struts 和 Tomcat 源代码进行了一些挖掘,发现将 POST 正文存储到字节数组中并基于该数组公开 Stream 和 Reader 并不重要;当需要解析参数时,Tomcat 的 Request 对象会访问其内部的 InputStream,此时该 InputStream 已经被读取。
有人知道如何正确实现这种日志记录吗?
【问题讨论】:
标签: java tomcat logging servlets http-post