diff --git a/src/main/java/com/logentries/logback/LogentriesAppender.java b/src/main/java/com/logentries/logback/LogentriesAppender.java index 33bbd86..a290cde 100644 --- a/src/main/java/com/logentries/logback/LogentriesAppender.java +++ b/src/main/java/com/logentries/logback/LogentriesAppender.java @@ -19,6 +19,10 @@ */ public class LogentriesAppender extends AppenderBase { + /** + * + */ + private boolean useExceptionFormatter; /** * Asynchronous Background logger */ @@ -53,6 +57,10 @@ public LogentriesAppender(AsyncLogger logger) { this.le_async = logger; } + protected AsyncLogger getAsyncLogger() { + return le_async; + } + /* * Public methods to send logback parameters to AsyncLogger */ @@ -64,6 +72,13 @@ public LogentriesAppender(AsyncLogger logger) { public void setToken(String token) { this.le_async.setToken(token); } + + /** + * Set whether to use com.logentries.logback.ExceptionFormatter when creating default layout + */ + public void setUseExceptionFormatter(boolean value) { + this.useExceptionFormatter = value; + } /** * Sets the HTTP PUTflag.

Send logs via HTTP PUT instead of default Token @@ -233,6 +248,15 @@ public Layout getLayout() { protected void append(ILoggingEvent event) { // Render the event according to layout String formattedEvent = layout.doLayout(event); + + // Append stack trace if present + if (useExceptionFormatter) { + IThrowableProxy error = event.getThrowableProxy(); + if (error != null) { + formattedEvent += ExceptionFormatter.formatException(error); + } + } + // Prepare to be queued this.le_async.addLineToQueue(formattedEvent); } @@ -248,12 +272,12 @@ public void stop() { public Layout buildLayout() { PatternLayout l = new PatternLayout(); + l.setContext(getContext()); l.getInstanceConverterMap().put("syslogStart", SyslogStartConverter.class.getName()); if (suffixPattern == null) { suffixPattern = DEFAULT_SUFFIX_PATTERN; } l.setPattern(getPrefixPattern() + suffixPattern); - l.setContext(getContext()); l.start(); return l; }