Log4j formatting: Is it possible to truncate stacktraces?
You can use a EnhancedPatternLayout in log4j to format your stacktraces.
See http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/EnhancedPatternLayout.html, specifically the section about the "throwable" pattern in the pattern table.
Note that support for the %throwable{n}
support is rather new and requires at least log4j 1.2.16 (which is the latest at time of writing)
For tracking purposes, this is the ticket that dealt with its implementation: https://issues.apache.org/bugzilla/show_bug.cgi?id=48902
Yup... EnhancedPatternLayout provides this functionality. (Since Log4J-1.2.16, was in extra companions before).
For a log4j config of
<appender name="Console" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="debug"/>
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t] %c.%M - %m%n %throwable{short}"/>
</layout>
</appender>
and for a piece of Java code like
throw new Exception(new Exception("Inner Exception"));
You get the following in the log file...
java.lang.Exception: java.lang.Exception: Inner Exception
If we remove the '%throwable{short}' from our log4j config file we would get the full stack trace
In log4j2.xml simply add %throwable{short} at end. No need to add param name.
<PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n %throwable{short} %n"/>
ref : https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout
I don't know of such an option. But you can extend your current appender (for example RollingFileAppender
) and provide an append
/ doAppend
/ subAppend
method (depending on which class you are extending) to handle this.
The throwable information is contained in LoggingEvent.throwableInformation
That said, I'm not sure you should do this - you can lose important information that way.