Return-Path: Delivered-To: apmail-logging-log4j-dev-archive@www.apache.org Received: (qmail 57547 invoked from network); 21 Feb 2007 23:37:56 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 21 Feb 2007 23:37:56 -0000 Received: (qmail 39519 invoked by uid 500); 21 Feb 2007 23:38:03 -0000 Delivered-To: apmail-logging-log4j-dev-archive@logging.apache.org Received: (qmail 39491 invoked by uid 500); 21 Feb 2007 23:38:03 -0000 Mailing-List: contact log4j-dev-help@logging.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Log4J Developers List" Reply-To: "Log4J Developers List" Delivered-To: mailing list log4j-dev@logging.apache.org Received: (qmail 39480 invoked by uid 500); 21 Feb 2007 23:38:03 -0000 Received: (qmail 39477 invoked by uid 99); 21 Feb 2007 23:38:03 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Feb 2007 15:38:03 -0800 X-ASF-Spam-Status: No, hits=-98.6 required=10.0 tests=ALL_TRUSTED,INFO_TLD,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Feb 2007 15:37:54 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 155A41A981A; Wed, 21 Feb 2007 15:37:34 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r510307 - in /logging/log4j/branches/v1_2-branch: src/java/org/apache/log4j/net/SyslogAppender.java tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java Date: Wed, 21 Feb 2007 23:37:33 -0000 To: log4j-cvs@logging.apache.org From: carnold@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070221233734.155A41A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: carnold Date: Wed Feb 21 15:37:32 2007 New Revision: 510307 URL: http://svn.apache.org/viewvc?view=rev&rev=510307 Log: Bug 40502: SyslogAppender assumes all stack trace lines start with tab Modified: logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java Modified: logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java URL: http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java?view=diff&rev=510307&r1=510306&r2=510307 ============================================================================== --- logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java (original) +++ logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SyslogAppender.java Wed Feb 21 15:37:32 2007 @@ -261,12 +261,12 @@ if (layout.ignoresThrowable()) { String[] s = event.getThrowableStrRep(); if (s != null) { - int len = s.length; - if(len > 0) { - sqw.write(s[0]); - for(int i = 1; i < len; i++) { - sqw.write(TAB+s[i].substring(1)); - } + for(int i = 0; i < s.length; i++) { + if (s[i].startsWith("\t")) { + sqw.write(TAB+s[i].substring(1)); + } else { + sqw.write(s[i]); + } } } } Modified: logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java URL: http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java?view=diff&rev=510307&r1=510306&r2=510307 ============================================================================== --- logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java (original) +++ logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SyslogAppenderTest.java Wed Feb 21 15:37:32 2007 @@ -25,14 +25,10 @@ import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.VectorErrorHandler; -import org.apache.log4j.helpers.SyslogWriter; import java.util.StringTokenizer; -import java.io.IOException; import java.net.DatagramSocket; import java.net.DatagramPacket; -import java.net.InetAddress; -import java.net.UnknownHostException; /** @@ -391,8 +387,9 @@ appender.setSyslogHost("127.0.0.1:1514"); } - - public void testActualLogging() throws Exception { + private static String[] log(final String msg, + final Exception ex, + final int packets) throws Exception { DatagramSocket ds = new DatagramSocket(); ds.setSoTimeout(2000); DatagramPacket p = new DatagramPacket(new byte[1000], 0, 1000); @@ -406,14 +403,63 @@ Logger l = Logger.getRootLogger(); l.addAppender(appender); - l.info("greetings"); + if (ex == null) { + l.info(msg); + } else { + l.error(msg, ex); + } appender.close(); - ds.receive(p); + String[] retval = new String[packets]; + for(int i = 0; i < packets; i++) { + ds.receive(p); + retval[i] = new String(p.getData(), 0, p.getLength()); + } ds.close(); - String s = new String(p.getData(), 0, p.getLength()); + return retval; + } + + public void testActualLogging() throws Exception { + String s = log("greetings", null, 1)[0]; StringTokenizer st = new StringTokenizer(s, "<>() "); assertEquals("14", st.nextToken()); assertEquals("greetings", st.nextToken()); + } + + /** + * Exception with printStackTrace that breaks earlier SyslogAppender. + */ + private static class MishandledException extends Exception { + /* + * Create new instance. + */ + public MishandledException() { + } + + /** + * Print stack trace. + * @param w print writer, may not be null. + */ + public void printStackTrace(final java.io.PrintWriter w) { + w.println("Mishandled stack trace follows:"); + w.println(""); + w.println("No tab here"); + w.println("\ttab here"); + } + } + + /** + * Tests fix for bug 40502. + * @throws Exception on IOException. + */ + public void testBadTabbing() throws Exception { + String[] s = log("greetings", new MishandledException(), 5); + StringTokenizer st = new StringTokenizer(s[0], "<>() "); + assertEquals("11", st.nextToken()); + assertEquals("greetings", st.nextToken()); + assertEquals("<11>Mishandled stack trace follows:", s[1]); + assertEquals("<11>", s[2]); + assertEquals("<11>No tab here", s[3]); + assertEquals("<11>" + SyslogAppender.TAB + "tab here", s[4]); } } --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org For additional commands, e-mail: log4j-dev-help@logging.apache.org