Hi,

the project I'm working on decided to switch to slf4j and logback for logging, 
and our experiences so far are very good. Thanks for the great work!!

During implementation and testing we discovered that the SyslogAppender does 
not seem to log the throwable type and its message at all. To overcome this 
we've overridden the the SyslogAppender.postProcess() method. I believe this is 
a bug which should be addressed. The git diff after patching this is given 
below.

Best Regards,

Tobias Lund-Melcher


-----------------git diff-------------------------



diff --git 
a/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java 
b/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java
index 67845db..bc35399 100644
--- 
a/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java
+++ 
b/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java
@@ -21,6 +21,7 @@ import ch.qos.logback.classic.pattern.SyslogStartConverter;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.IThrowableProxy;
 import ch.qos.logback.classic.spi.StackTraceElementProxy;
+import ch.qos.logback.classic.spi.ThrowableProxyUtil;
 import ch.qos.logback.classic.util.LevelToSyslogSeverity;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.Layout;
@@ -82,10 +83,15 @@ public class SyslogAppender extends 
SyslogAppenderBase<ILoggingEvent> {
 
     IThrowableProxy tp = event.getThrowableProxy();
     while (tp != null) {
-      StackTraceElementProxy[] stepArray = tp.getStackTraceElementProxyArray();
       try {
+        StringBuilder sb = new StringBuilder(prefix);
+        ThrowableProxyUtil.printFirstLine(sb, tp);
+        sw.write(sb.toString().getBytes());
+        sw.flush();
+
+        StackTraceElementProxy[] stepArray = 
tp.getStackTraceElementProxyArray();
         for (StackTraceElementProxy step : stepArray) {
-          StringBuilder sb = new StringBuilder();
+          sb = new StringBuilder();
           sb.append(prefix).append(CoreConstants.TAB).append(step);
           sw.write(sb.toString().getBytes());
           sw.flush();
diff --git 
a/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
 
b/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
index 83056a6..269f387 100644
--- 
a/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
+++ 
b/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
@@ -132,6 +133,10 @@ public class SyslogAppenderTest {
     String regex = expectedPrefix + "\\[" + threadName + "\\] " + loggerName
         + " " + logMsg;
     checkRegexMatch(msg, regex);
+    
+    msg = mockServer.getMessageList().get(1);
+    assertTrue(msg.contains(ex.getClass().getName()));
+    assertTrue(msg.contains(ex.getMessage()));
   }
 
   private void checkRegexMatch(String s, String regex) {

_______________________________________________
logback-dev mailing list
logback-dev@qos.ch
http://qos.ch/mailman/listinfo/logback-dev

Reply via email to