package lsr.common.logFormatters; import java.io.PrintWriter; import java.io.StringWriter; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.classic.spi.IThrowableProxy; import ch.qos.logback.classic.spi.ThrowableProxy; import ch.qos.logback.core.LayoutBase; public class BenchmarkFormatter extends LayoutBase<ILoggingEvent> { private void printThrown(StringBuilder sb, ILoggingEvent event) { IThrowableProxy itp = event.getThrowableProxy(); if (itp instanceof ThrowableProxy) { ThrowableProxy tp = (ThrowableProxy) itp; StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); tp.getThrowable().printStackTrace(pw); pw.close(); sb.append(sw.toString()); } else { sb.append("!!! :: SOME UNPARSABLE ERROR :: !!!"); sb.append(itp.getMessage()); } } @Override public String doLayout(ILoggingEvent event) { StringBuilder sb = new StringBuilder(); sb.append(event.getTimeStamp()); sb.append('\t'); sb.append(event.getFormattedMessage()); sb.append('\n'); if (event.getThrowableProxy() != null) { printThrown(sb, event); } return sb.toString(); } }