While debugging a problem, I was annoyed to find that the logs just contained the name of the exception and not the stack trace. The code in question was essentially:
try {
doSomething();
} catch (Throwable t) {
_logger.warn(t);
}
The problem is that the
Logger.warn(Object) method of log4j accepts an object and not a string so the code compiles without issue. The correct method for exceptions is
Logger.warn(Object,Throwable). Having a method in java that accepts a parameter of type
Object should be done with caution as anything (even primitive types due to
autoboxing) can be passed in with no compile time validation. Curious, I decided to look at what other logging libraries chose to do.
No comments:
Post a Comment