There is a special Conversion Character to customize exception traces called throwable. But if you need more control about how to print exceptions you can hook your own renderer.
Create a class which implements org.apache.log4j.spi.ThrowableRenderer.
package es.cixtec.complexarchetype.web.log4j;
import org.apache.log4j.spi.ThrowableRenderer;
public class MyCustomThrowableRenderer implements ThrowableRenderer {
@Override
public String[] doRender(final Throwable t) {
// do something with t
return new String[] { "This", "is", "a", "custom", "trace" };
}
}
Then, in log4j.xml, you need to link this class by using the throwableRenderer tag.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>
<throwableRenderer class="es.sisifo.test.web.log4j.MyCustomThrowableRenderer"/>
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="LOG" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${jboss.server.log.dir}/test-web.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="[%-5p][%d{ISO8601}][%-4L] %F>%m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="LOG" />
</root>
</log4j:configuration>
As result, when a exception is logged you get something like this.
LOGGER.error("Exceptions happens", new NullPointerException());
[ERROR][2015-12-30 11:33:09,003][45 ] GridServiceImpl.java>Exceptions happens This is a custom trace
No hay comentarios:
Publicar un comentario