You don't need to do that. Use Log4J - it contains everything you need, and it can log the name of the class and method and even the line number in the source code where you're executing the logging statement.
Well, it can slow things down considerably if you do a lot of logging. But it depends on the code. You may well find that the performance overhead of logging the method names is unnoticeable in your application. The important thing is to remember that you can turn it off, or limit it to certain classes, by configuring the log4j.xml file.
"Generating a stack trace" never occurs - a thread always knows its current call stack so 'generating' it has no meaning. Generating some structure that resembles the current call stack (such as a StackTraceElement) is asymptotic in cost.
I assume you are using 1.4 or greater in which case call stack information is cheap and available. There are several uses for this but of course you should avoid injecting dependencies on a particular caller in any method. Here's one way you can call a method to find out who's calling.
Note that you don't care who called "whence() but rather who called the method containing whence, hence the index is one not zero. Example: