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