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?



Reply via email to