Here is one obvious problem with this approach: the String messages will be constructed on each call to debug()
, there is no obvious way to use a guard clause with your wrapper.
The standard idiom with log4j/commons-logging/slf4j is to use a guard clause such as:
if (log.isDebugEnabled()) log.debug("blah blah blah");
With the purpose being that if the DEBUG
level is not enabled for the logger, the compiler can avoid concatenating together any longer strings you may send it:
if (log.isDebugEnabled()) log.debug("the result of method foo is " + bar
+ ", and the length is " + blah.length());
See “What is the fastest way of (not) logging?” in the SLF4J or log4j FAQ.
I would recommend against the “wrapper” your boss suggests. A library like slf4j or commons-logging is already a facade around the actual underlying logging implementation used. In addition, each invocation of the logger becomes much lengthier – compare the above with
MyLoggerWrapper.debug(Foo.class, "some message");
This is the type of trivial and unimportant “wrapping” and obfuscation that serves no real purpose other than adding layers of indirection and ugly-fying your code. I think your boss can find more important issues to obsess over.