Today I had the problem that no stacktrace was printed in logs produced by log4j. Here's an important difference between the logging functions with 1 and 2 parameters:
So, use 2 parameters with the Throwable object as 2nd parameter to get a full backtrace. If you want to receive a single line in your output can pass the Throwable as the 1st parameter.
Logger logger = Logger.getLogger(MyClass.class);
try {
someFunction();
} catch(MyException e) {
logger.error("someFunction failed", e); // prints stacktrace
logger.error("someFunction failed" + e); // one-liner with type of exception
}
try {
someFunction();
} catch(MyException e) {
logger.error("someFunction failed", e); // prints stacktrace
logger.error("someFunction failed" + e); // one-liner with type of exception
}
So, use 2 parameters with the Throwable object as 2nd parameter to get a full backtrace. If you want to receive a single line in your output can pass the Throwable as the 1st parameter.