2011-04-02 449 views
2

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

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有一个标准的方式来漂亮打印这些对象,因为他们出现在电线上?

回答

3

Tomcat支持所谓的Log Valve - 通过一些格式化你可以实现你想要的。

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

+0

我最终在Logback Access中使用了类的修改版本。 – mchr 2011-04-26 11:43:17

0

我不知道您是否可以正确显示标头,因为它们会被发送,但是如果您启用了Tomcat的请求转储阀,您将看到所有发送和接收的标头。

+0

你能举个例子说明这个输出是什么样的吗?试图谷歌这一点,找不到任何例子。 – mchr 2011-04-02 14:05:14