【问题标题】:How to pretty print HttpServletRequest and HttpServletResponse如何漂亮地打印 HttpServletRequest 和 HttpServletResponse
【发布时间】:2011-07-28 06:03:54
【问题描述】:

我想将请求和响应的日志记录添加到我在 Tomcat 6 中运行的 Java webapp。其目的是生成一个日志文件,其输出类似于 Wireshark 将显示的内容。例如:

GET / HTTP/1.1
Host: www.bing.com
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

我认为最好的方法是使用过滤器来捕获传入的 HttpServletRequest 并包装 HttpServletResponse 以允许捕获响应内容。

但是,一旦我有一个 HttpServletRequest 和 HttpServletResponse ,有没有一种标准方法可以漂亮地打印这些对象,因为它们出现在网络上?

【问题讨论】:

    标签: java http tomcat logging


    【解决方案1】:

    Tomcat 支持所谓的Log Valve - 稍加格式化即可实现您想要的。

    同样Logback Access 模块旨在提供相同的功能,但使用 Logback 库。

    【讨论】:

    • 我最终使用了 Logback Access 中类的修改版本。
    【解决方案2】:

    我不知道您是否可以准确地显示标头,但如果您启用 Tomcat 的请求转储阀,您将看到所有已发送和接收的标头。

    【讨论】:

    • 你能给我举个例子说明这个输出是什么样子的吗? A 试图用谷歌搜索,但找不到任何示例。
    猜你喜欢
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2012-10-08
    • 2011-02-04
    • 2015-02-07
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多