I've been using log4j for quite a while. However, if you are worried about prettiness of your code then using AspectJ seems to be the way to go. It allows you to pick the methods that you want to log without messy if-then-elses. Jakarta's Cactus framework uses AspectJ for example. If it's only performance then a final variable is what you would use. I have seen people suggest using the assert keyword for logging but that seems wrong.
Cactus uses Clover for its code coverage. There's also JATE and JVMDI.