A proposal for an HTTP stream capture mechanism

Jean-Christophe Collet Jean-Christophe.Collet at Sun.COM
Thu Apr 23 07:02:23 PDT 2009


I have been working on adding better logging and debugging tools to the 
HTTP implementation.
A significant chunk of the bugs that we have to investigate are HTTP 
related and being able to monitor the traffic has always been a problem. 
Using a packet sniffer is cumbersome and not always possible.
So I have been putting together a prototype to make that a lot easier. 
The idea is to be able to turn on traffic capture with a system property 
and a simple "rule" file.

The idea is that you can specify a set of capture rules in a file and 
point to that file with the property 'sun.net.http.captureRules'
The rule file has a simple syntax. 1 rule per line. A line starting with 
a '#' is a comment and is ignored. A rule is a comma separated pair 
regular-expression , file pattern.
e.g.:

http://www\.sun\.com , sun%d.log

tells to capture traffic for all URLs containing http://www.sun.com and 
to dump that traffic into a file sunxxxxxx.log (the xxxxxx is a randomly 
generated number that ensures the created file doesn't overwrite an 
existing one. Of course that '%d' is optional. If the files exist, then 
every capture is appended to it (which might not be a good idea in case 
of multiple parallel threads).

So to capture all the traffic into a single file, the rule would be:

.* , http.log

A usage example becomes:

$ java -Dsun.net.http.captureRules=capture-rules GetURL http://www.sun.com

where 'capture-rules' is the file containing my set of rules.

I have a first prototype of this working but I'm still refining it. I'll 
publish a webrev in a few days.

Comments?






More information about the net-dev mailing list