From 7a8ff5c9adbdf54ccda2a4b1988f93fe764ad63e Mon Sep 17 00:00:00 2001 From: Steve Kradel Date: Wed, 13 Apr 2016 14:25:25 -0400 Subject: [PATCH 1/2] Add LogentriesAppender.setUseExceptionFormatter and wire in append(ILoggingEvent); add protected method getAsyncLogger to permit meaningful override of append in subclasses --- .../logback/LogentriesAppender.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/com/logentries/logback/LogentriesAppender.java b/src/main/java/com/logentries/logback/LogentriesAppender.java index 33bbd86..e5f9dd7 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); } From 05e7ff20fc52bfbdb3e5cd56ef4b49052b5eb523 Mon Sep 17 00:00:00 2001 From: Steve Kradel Date: Wed, 13 Apr 2016 15:38:37 -0400 Subject: [PATCH 2/2] Reorder setContext on PatternLayout within LogEntriesAppender.buildLayout as first call after ctor --- src/main/java/com/logentries/logback/LogentriesAppender.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/logentries/logback/LogentriesAppender.java b/src/main/java/com/logentries/logback/LogentriesAppender.java index e5f9dd7..a290cde 100644 --- a/src/main/java/com/logentries/logback/LogentriesAppender.java +++ b/src/main/java/com/logentries/logback/LogentriesAppender.java @@ -272,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; }