Getting stacktrace in logger
Solution 1
You have to use the two argument form
log.error("my logging message", exception)
See http://www.devdaily.com/blog/post/java/how-print-exception-stack-trace-using-log4j-commons for more details.
Solution 2
Change your logging statement to:
log.error("Exception is: ", e);
Solution 3
It is actualy log4j that prevents the printing of the fulltime stacktrace. You should however set the exception as a second parameter for the error method.
Solution 4
If you use the below than e.toString() will be called which calls e.getMessage()
log.error("Exception is:::" + e);
However, to print full stack trace you can use the below:
log.error("Exception is:::" + ExceptionUtils.getStackTrace(e));
where ExceptionUtils is imported as org.apache.commons.lang3.exception.ExceptionUtils
Geek
Updated on July 09, 2022Comments
-
Geek almost 2 years
I am using log4j to log my exceptions. I want to log whatever I get in
e.printStackTrace();
My code looks like this:try { } catch(Exception e) { log.error("Exception is:::" + e); }
But the content I get logged looks like this:
2012-02-02 12:47:03,227 ERROR [com.api.bg.sample] - Exception in unTech:::[Ljava.lang.StackTraceElement;@6ed322 2012-02-02 12:47:03,309 ERROR [com.api.bg.sample] - Exception is :::java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
But the content I expect is:
java.io.IOException: Not in GZIP format at java.util.zip.GZIPInputStream.readHeader(Unknown Source) at java.util.zip.GZIPInputStream.<init>(Unknown Source) at java.util.zip.GZIPInputStream.<init>(Unknown Source) at com.api.bg.sample.unGZIP(sample.java:191) at com.api.bg.sample.main(sample.java:69)
I tried
e.getMessage()
,e.getStackTrace();
however I don't get the full stacktrace. Any suggestions?