I'm not aware of any (although I've never looked) but if you wanted to code your own, what you would do is set up a filter that intercepts every request (look up the filter syntax for web.xml), have that filter record the various info and then pass the request on to the next thing in the chain (probably your servlet or jsp). The ideal situation would be to dump this info into a database but if you don't have one handy, be very careful about threading if you're storing it in memory and when you eventually write it out to a file. The meat of the coding would be trivial, it's the actual storage of the info that may be cumbersome (and that's why a prebuilt package might not be particularly helpful).
I'll go and do a search for some now though.
Edit: oh, and the other thing you might consider is fronting tomcat with apache and using the built in logging capabilities there along with webalizer. Come to think of it, simple log4j loggings from your filter would probably be fine if you don't mind an entry-per-request type log file with your data.