[logback-dev] svn commit: r1675 - in logback/trunk: logback-classic/src/test/input/joran logback-classic/src/test/java/ch/qos/logback/classic logback-classic/src/test/java/ch/qos/logback/classic/net logback-core/src/main/java/ch/qos/logback/core/net logback-site/src/site/pages logback-site/src/site/pages/manual

noreply.ceki at qos.ch noreply.ceki at qos.ch
Thu Apr 17 16:52:22 CEST 2008


Author: ceki
Date: Thu Apr 17 16:52:22 2008
New Revision: 1675

Added:
   logback/trunk/logback-classic/src/test/input/joran/syslog_147.xml
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/TestContants.java
      - copied, changed from r1666, /logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/Contants4T.java
Removed:
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/Contants4T.java
Modified:
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/PackageTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
   logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java
   logback/trunk/logback-site/src/site/pages/codes.html
   logback/trunk/logback-site/src/site/pages/manual/appenders.html

Log:
- renamed Constant4T ad TestConstants
- fixed bug 147 which was caused by the user specifying a layout for SyslogAppender. 
  SyslogAppender now disallows the user to set a layout. It also informs the user
  that the action is disallows directing her to an error page.
- updated codes.html in relation to bug 147
- simplified and shortened codes.html 

Added: logback/trunk/logback-classic/src/test/input/joran/syslog_147.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/src/test/input/joran/syslog_147.xml	Thu Apr 17 16:52:22 2008
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="true">
+  <appender name="aSYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
+    <SyslogHost>127.0.0.1</SyslogHost>
+    <Facility>LOCAL7</Facility>
+    <layout class="ch.qos.logback.classic.PatternLayout">
+      <pattern>%d %p [%t] %c::%m%n</pattern>
+    </layout>
+  </appender>
+  <root>
+    <level value="TRACE"/>
+    <appender-ref ref="aSYSLOG"/>
+  </root>
+</configuration>
\ No newline at end of file

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java	Thu Apr 17 16:52:22 2008
@@ -64,7 +64,7 @@
     pl.start();
     String val = pl.doLayout(getEventObject());
     // 2006-02-01 22:38:06,212 INFO [main] c.q.l.pattern.ConverterTest - Some message
-    String regex = Contants4T.ISO_REGEX+" INFO \\[main] c.q.l.c.pattern.ConverterTest - Some message\\s*";
+    String regex = TestContants.ISO_REGEX+" INFO \\[main] c.q.l.c.pattern.ConverterTest - Some message\\s*";
     assertTrue(val.matches(regex));
   }
 
@@ -86,7 +86,7 @@
     pl.start();
     String val = pl.doLayout(getEventObject());
     // 2008-03-18 21:55:54,250 [main] c.q.l.c.pattern.ConverterTest - Some message
-    String regex = Contants4T.ISO_REGEX+" \\[main] c.q.l.c.p.ConverterTest   - Some message\\s*";
+    String regex = TestContants.ISO_REGEX+" \\[main] c.q.l.c.p.ConverterTest   - Some message\\s*";
     System.out.println(val);
     assertTrue(val.matches(regex));
 
@@ -123,7 +123,7 @@
     pl.start();
     String val = pl.doLayout(getEventObject());
     // 2006-02-01 22:38:06,212 INFO [main] c.q.l.pattern.ConverterTest - Some message
-    String regex = Contants4T.ISO_REGEX+" INFO \\[main] c.q.l.c.pattern.ConverterTest - Some message\\s*";
+    String regex = TestContants.ISO_REGEX+" INFO \\[main] c.q.l.c.pattern.ConverterTest - Some message\\s*";
     assertTrue(val.matches(regex));
   }
   

Copied: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/TestContants.java (from r1666, /logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/Contants4T.java)
==============================================================================
--- /logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/Contants4T.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/TestContants.java	Thu Apr 17 16:52:22 2008
@@ -9,7 +9,9 @@
  */
 package ch.qos.logback.classic;
 
-public class Contants4T {
+public class TestContants {
 
   final static public String ISO_REGEX =  "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3}";
+  
+  final static public String JORAN_ONPUT_PREFIX = "src/test/input/joran";
 }

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/PackageTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/PackageTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/PackageTest.java	Thu Apr 17 16:52:22 2008
@@ -19,7 +19,7 @@
   
   public static Test suite() {
     TestSuite suite = new TestSuite();
-    suite.addTestSuite(SyslogAppenderTest.class);
+    suite.addTest(new JUnit4TestAdapter(SyslogAppenderTest.class));
     suite.addTestSuite(SMTPAppenderTest.class);
     suite.addTest(new JUnit4TestAdapter(SocketAppenderTest.class));
     suite.addTestSuite(JMSTopicAppenderTest.class);

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java	Thu Apr 17 16:52:22 2008
@@ -9,26 +9,34 @@
  */
 package ch.qos.logback.classic.net;
 
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.LoggerFactory;
+
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.TestContants;
+import ch.qos.logback.classic.joran.JoranConfigurator;
 import ch.qos.logback.classic.net.mock.MockSyslogServer;
+import ch.qos.logback.core.joran.spi.JoranException;
 import ch.qos.logback.core.net.SyslogConstants;
+import ch.qos.logback.core.util.StatusPrinter;
 
-public class SyslogAppenderTest extends TestCase {
-
-  public SyslogAppenderTest(String arg0) {
-    super(arg0);
-  }
+public class SyslogAppenderTest {
 
-  protected void setUp() throws Exception {
-    super.setUp();
+  @Before
+  public void setUp() throws Exception {
   }
 
-  protected void tearDown() throws Exception {
-    super.tearDown();
+  @After
+  public void tearDown() throws Exception {
   }
 
+  @Test
   public void testBasic() throws InterruptedException {
     int port = MockSyslogServer.PORT + 1;
 
@@ -53,7 +61,7 @@
     logger.addAppender(sa);
     String logMsg = "hello";
     logger.debug(logMsg);
-    //StatusPrinter.print(lc.getStatusManager());
+    // StatusPrinter.print(lc.getStatusManager());
 
     // wait max 2 seconds for mock server to finish. However, it should
     // much sooner than that.
@@ -73,6 +81,7 @@
 
   }
 
+  @Test
   public void testException() throws InterruptedException {
     int port = MockSyslogServer.PORT + 2;
     MockSyslogServer mockServer = new MockSyslogServer(21, port);
@@ -98,29 +107,45 @@
     String exMsg = "just testing";
     Exception ex = new Exception(exMsg);
     logger.debug(logMsg, ex);
-    //StatusPrinter.print(lc.getStatusManager());
+    // StatusPrinter.print(lc.getStatusManager());
 
     // wait max 2 seconds for mock server to finish. However, it should
     // much sooner than that.
     mockServer.join(8000);
     assertTrue(mockServer.isFinished());
-    
-    //message + 20 lines of stacktrace
+
+    // message + 20 lines of stacktrace
     assertEquals(21, mockServer.getMessageList().size());
-//    int i = 0;
-//    for (String line: mockServer.msgList) {
-//      System.out.println(i++ + ": " + line);
-//    }
-    
+    // int i = 0;
+    // for (String line: mockServer.msgList) {
+    // System.out.println(i++ + ": " + line);
+    // }
+
     String msg = mockServer.getMessageList().get(0);
     String expected = "<"
         + (SyslogConstants.LOG_MAIL + SyslogConstants.DEBUG_SEVERITY) + ">";
     assertTrue(msg.startsWith(expected));
-    
+
     String expectedPrefix = "<\\d{2}>\\w{3} \\d{2} \\d{2}(:\\d{2}){2} \\w* ";
     String threadName = Thread.currentThread().getName();
-    String expectedResult = expectedPrefix + "\\[" + threadName + "\\] " + loggerName
-        + " " + logMsg;
+    String expectedResult = expectedPrefix + "\\[" + threadName + "\\] "
+        + loggerName + " " + logMsg;
     assertTrue(msg.matches(expectedResult));
   }
+
+  @Test
+  public void bug147() throws JoranException {
+
+    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
+
+    JoranConfigurator configurator = new JoranConfigurator();
+    configurator.setContext(lc);
+    lc.shutdownAndReset();
+    configurator.doConfigure(TestContants.JORAN_ONPUT_PREFIX
+        + "/syslog_147.xml");
+
+    org.slf4j.Logger logger = LoggerFactory.getLogger(this.getClass());
+    logger.info("hello");
+    StatusPrinter.print(lc);
+  }
 }

Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java	(original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java	Thu Apr 17 16:52:22 2008
@@ -5,10 +5,13 @@
 import java.net.UnknownHostException;
 
 import ch.qos.logback.core.AppenderBase;
+import ch.qos.logback.core.CoreGlobal;
 import ch.qos.logback.core.Layout;
 
 public abstract class SyslogAppenderBase<E> extends AppenderBase<E> {
 
+  final static String SYSLOG_LAYOUT_URL = CoreGlobal.CODES_URL + "#syslog_layout";
+  
   Layout<E> layout;
   int facility;
   String facilityStr;
@@ -44,7 +47,7 @@
       super.start();
     }
   }
-
+  
   abstract public Layout<E> buildLayout(String facilityStr);
 
   abstract public int getSeverityForEvent(Object eventObject);
@@ -182,15 +185,13 @@
     this.port = port;
   }
 
-  /**
-   * You can override
-   */
+
   public Layout<E> getLayout() {
     return layout;
   }
 
   public void setLayout(Layout<E> layout) {
-    this.layout = layout;
+    addWarn("The layout of a SyslogAppender cannot be set directly. See also "+SYSLOG_LAYOUT_URL);
   }
 
   @Override

Modified: logback/trunk/logback-site/src/site/pages/codes.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/codes.html	(original)
+++ logback/trunk/logback-site/src/site/pages/codes.html	Thu Apr 17 16:52:22 2008
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-<title>Logback FAQ</title>
+<title>Logback Error Codes</title>
 <link rel="stylesheet" type="text/css" media="screen" href="css/site.css" />
 </head>
 
@@ -23,380 +23,243 @@
   <h2><a name="top">Logback error messages and their meanings</a></h2>
   
 
-  <ol type="1">
+  <p><a name="null_CS" href="#null_CS">
+  contextSelector cannot be null
+  </a>
+  </p>
 
-    <li>
-      <a href="#null_CS">contextSelector cannot be null</a>
-    </li>
+  <p>XXXXXXXXXXX</p>
 
-    <li>
-      <a href="#tbr_fnp_not_set">The <b>FileNamePattern</b> option
-      must be set before using <code>TimeBasedRollingPolicy</code> or
-      <code>FixedWindowRollingPolicy</code>
-      </a>
-    </li>
+  <hr/>
 
-    <li>
-      <a href="#fwrp_parentFileName_not_set">The <span
-      class="option">File</span> option must be set before
-      <code>FixedWindowRollingPolicy</code>
-      </a>
-    </li>
-    
-    <li>
-      <a href="#socket_no_host">No remote host or address is set
-      for <code>SocketAppender</code>
-      </a>
-    </li>
-    
-    <li>
-      <a href="#socket_no_port">No remote port is set for
-      <code>SocketAppender</code>      
-      </a>
-    </li>
-    
-    
-    <li>
-      <a href="#smtp_no_layout">
-        No <code>Layout</code> is set for appender
-      </a>
-    </li>
-    
-    <li>
-      <a href="#sbtp_size_format">
-        Specified number is not in proper int form, or
-        not expected format.
-      </a>
-    </li>
-    
-    <li>
-      <a href="#rfa_no_tp">
-        No <code>TriggeringPolicy</code> was set for the
-        <code>RollingFileAppender</code>
-      </a>
-    </li>
-    
-    <li>
-      <a href="#rfa_no_rp">
-        No <code>RollingPolicy</code> was set for the
-        <code>RollingFileAppender</code>
-      </a>
-    </li>
-  </ol>
-					
-					
-  <h2>Error codes and their meanings</h2>
-					
-  <dl>
 
-    <dt>
-      <a name="null_CS">
-        contextSelector cannot be null
-      </a>
-    </dt>
-    
-    <dd>
-
-          
-    </dd>
+  <p>
+    <a name="tbr_fnp_not_set" href="#tbr_fnp_not_set">
+      The <b>FileNamePattern</b> option must be set before using
+      <code>TimeBasedRollingPolicy</code> or
+      <code>FixedWindowRollingPolicy</code>
+    </a>
+  </p>
 
-    <dt>
-      <a name="tbr_fnp_not_set">
-        The <b>FileNamePattern</b> option must be set before using
-        <code>TimeBasedRollingPolicy</code> or
-        <code>FixedWindowRollingPolicy</code>
-						
-      </a>
-    </dt>
-          
-    <dd>
-      <p>The <b>FileNamePattern</b> option for both
-      <code>TimeBasedRollingPolicy</code> and
-      <code>FixedWindowRollingPolicy</code> is mandatory.
-      </p>
-      
-      <p>See the <a
-      href="http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/FixedWindowRollingPolicy.html">
-      FixedWindowRollingPolicy javadoc
-      </a> for more information.
-      
-      </p>
+  
+  <p>The <b>FileNamePattern</b> option for both
+  <code>TimeBasedRollingPolicy</code> and
+  <code>FixedWindowRollingPolicy</code> is mandatory.
+  </p>
+  
+  <p>See the <a
+  href="http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/FixedWindowRollingPolicy.html">
+  FixedWindowRollingPolicy javadoc </a> for more information.
+  </p>
 					
-      <table border="0">
-        <tr>
-          <td align="right"><a href="#top">[top]</a></td>
-        </tr>
-      </table>
-      <hr />
-    </dd>
-
-    <dt>
-      <a name="fwrp_parentFileName_not_set">
-        The <span class="option">File</span> option must be set before
-        <code>FixedWindowRollingPolicy</code>
-      </a>
-    </dt>
+  <hr />
 
-    <dd>
-      <p>The <span class="option">File</span> option is mandatory with
-      <code>FixedWindowRollingPolicy</code>. Moreover, the <span
-      class="option">File</span> option must be set before the
-      <code>FixedWindowRollingPolicy</code> element.
-      </p>
-      
-      <p>Refer to the logback manual on
-      <a href="manual/appenders.html#FixedWindowRollingPolicy">
-        FixedWindowRollingPolicy
-      </a>
-      for more information.
-      </p>
+  <p>
+    <a name="fwrp_parentFileName_not_set" href="#fwrp_parentFileName_not_set">
+      The <span class="option">File</span> option must be set before
+      <code>FixedWindowRollingPolicy</code>
+    </a>
+  </p>
+
+  <p>The <span class="option">File</span> option is mandatory with
+  <code>FixedWindowRollingPolicy</code>. Moreover, the <span
+  class="option">File</span> option must be set before the
+  <code>FixedWindowRollingPolicy</code> element.
+  </p>
+      
+  <p>Refer to the logback manual on
+  <a href="manual/appenders.html#FixedWindowRollingPolicy">
+    FixedWindowRollingPolicy </a> for more information.
+  </p>
 			
-      <table border="0">
-        <tr>
-          <td align="right">
-            <a href="#top">[top]</a>
-          </td>
-        </tr>
-        </table>
-        <hr />
-
-    </dd>
-
-    <dt>
-      <a name="socket_no_host">No remote host or address is set for
-      <code>SocketAppender</code>						
-      </a>
-    </dt>
-    <dd>
-      <p>A remote host or address is mandatory for SocketAppender.
-      </p>
-      <p>You can specify the remote host in the configuration file
-      like this:
-      </p>
-      
-      <div class="source"><pre>
-&lt;appender name=&quot;SOCKET&quot; class=&quot;ch.qos.logback.classic.net.SocketAppender&quot;&gt;
+  <hr />
+
+  <p>
+    <a name="socket_no_host" href="#socket_no_host">No remote host or
+    address is set for <code>SocketAppender</code>
+    </a>
+  </p>
+
+  <p>A remote host or address is mandatory for SocketAppender. </p>
+  <p>You can specify the remote host in the configuration file
+  as follows.
+  </p>
+  
+  <p class="source">&lt;appender name="SOCKET"
+  class="ch.qos.logback.classic.net.SocketAppender">
   ...
-  &lt;param name=&quot;remoteHost&quot; value=&quot;127.0.0.1&quot;&gt;&lt;/param&gt;
+  &lt;remoteHost>127.0.0.1&lt;/remoteHost>
   ...
-&lt;/appender&gt;</pre>
-      </div>
-      
-      <table border="0">
-        <tr>
-          <td align="right">
-            <a href="#top">[top]</a>
-          </td>
-        </tr>
-      </table>
-      <hr />
-    </dd>
-
-    <dt>
-      <a name="socket_no_port">No remote port is set for
-      <code>SocketAppender</code> 
-      </a>
-    </dt>
+&lt;/appender&gt;</p>
+
+
+  <hr />
+
+  <p>
+    <a name="socket_no_port" href="#socket_no_port">No remote port is set for
+    <code>SocketAppender</code> 
+    </a>
+  </p>
     
-    <dd> 
-      <p>A remote port is mandatory for SocketAppender.
-      </p>
-      
-      <p>You can specify the remote port in the configuration file
-      like this:
-      </p>
+  <p>A remote port is mandatory for SocketAppender.</p>
       
-      <div class="source"><pre>
-&lt;appender name=&quot;SOCKET&quot; class=&quot;ch.qos.logback.classic.net.SocketAppender&quot;&gt;
+  <p>You can specify the remote port in the configuration file
+  like this:
+  </p>
+      
+  <p class="source">&lt;appender name="SOCKET" class=&quot;ch.qos.logback.classic.net.SocketAppender&quot;&gt;
   ...
-  &lt;param name=&quot;port&quot; value=&quot;4560&quot;&gt;&lt;/param&gt;
+  &lt;port>4560&lt;/port>
   ...
-&lt;/appender&gt;</pre>
-      </div>
+&lt;/appender&gt;</p>
 				
-      <table border="0">
-        <tr>
-          <td align="right">
-            <a href="#top">[top]</a>
-          </td>
-        </tr>
-      </table>
-      <hr />
-    </dd>
-    
-    <dt>
-      <a name="smtp_no_layout">No <code>Layout</code> is set for
-      appender</a>
-    </dt>
-    <dd>
-      <p>A <code>Layout</code> is mandatory for
-      <code>SMTPAppender</code> . It allows the appender format the
-      logging events before sending the email. Two layouts are often
-      used with <code>SMTPAppender</code> :
-      <code>PatternLayout</code> and <code>HTMLLayout</code> .
-      </p>
-      
-      <p>You can specify the <code>Layout</code> in the
-      configuration file like this:
-      </p>
+
+  <hr />
+
+  
+  <p>
+    <a name="smtp_no_layout" href="#smtp_no_layout">
+      No <code>Layout</code> is set for SMTPAppender</a>
+  </p>
+
+  <p>A <code>Layout</code> is mandatory for
+  <code>SMTPAppender</code>. It allows SMPTPAppender to format logging
+  events before sending an email.
+  </p>
+      
+  <p>You can specify the <code>Layout</code> in a configuration file
+  as follows:
+  </p>
       
-      <div class="source"><pre>
-&lt;appender name=&quot;SMTP&quot; class=&quot;ch.qos.logback.classic.net.SMTPAppender&quot;&gt;
+  <p class="source">&lt;appender name=&quot;SMTP&quot; class=&quot;ch.qos.logback.classic.net.SMTPAppender&quot;&gt;
   ...
   &lt;layout class=&quot;ch.qos.logback.classic.PatternLayout&quot;&gt;
-  &lt;param name=&quot;pattern&quot; value=&quot;%-4relative [%thread] %-5level %class - %msg%n&quot;&gt;&lt;/param&gt;
- &lt;/layout&gt;
+    &lt;pattern>%date [%thread] %-5level %logger - %msg%n&quot;&gt;&lt;/pattern>
+  &lt;/layout&gt;
   ...
-&lt;/appender&gt;</pre>
-
-      </div>
+&lt;/appender&gt;</p>
+      
+  <p>SMTPAppender is known to work well with <a
+  href="manual/layouts.html#ClassicPatternLayout">PatternLayout</a>
+  and <a
+  href="manual/layouts.html#ClassicHTMLLayout">HTMLLayout</a>.
+  </p>
+
+
+  <hr />
+      
+  <p>
+    <a name="sbtp_size_format" href="#sbtp_size_format">Specified number is not in proper
+    int form, or not expected format.  
+    </a>
+  </p>
+    
+  <p>When you specify the MaxFileSize to be used by the
+  SizeBasedRollingPolicy, logback expects a rather precise
+  format:
+  </p>
+  
+  <ul>
+    <li>The number has to be an integer</li>
+    <li>You can add 'KB', 'MB' or 'GB' after the number.
+    </li>
+  </ul>
       
-      <p>You can see more examples in the
-      <a href="http://logback.qos.ch/apidocs/ch/qos/logback/classic/html/HTMLLayout.html">
-        HTMLLayout javadoc
-        </a> and the
-        <a href="http://logback.qos.ch/apidocs/ch/qos/logback/classic/PatternLayout.html">
-          PatternLayout javadoc
-        </a>
-      </p>
-      
-      <table border="0">
-        <tr>
-          <td align="right">
-            <a href="#top">[top]</a>
-          </td>
-        </tr>
-      </table>
-      <hr />
-      
-      
-    </dd>
-    <dt>
-      <a name="sbtp_size_format">Specified number is not in proper
-      int form, or not expected format.  
+  <p>Here are some correct values: 500KB, 15MB, 2GB.</p>
+  
+  <hr />
+      
+  <p><a name="rfa_no_tp" href="#rfa_no_tp">No <code>TriggeringPolicy</code> was set for
+  the <code>RollingFileAppender</code>.
+  </a>
+  </p>
+    
+  <p>The <code>RollingFileAppender</code> must be set up with a
+  <code>TriggeringPolicy</code>. It permits the Appender to know when
+  the rollover must be activated.
+  </p>
+  
+  <p>To find more information about <code>TriggeringPolicy</code>
+  objects, please read the following javadocs:
+  </p>
+  
+  <ul>
+    <li>
+      <a
+       href="http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/SizeBasedTriggeringPolicy.html"><code>SizeBasedTriggeringPolicy</code>
       </a>
-    </dt>
-    
-    <dd>
-      <p>When you specify the MaxFileSize to be used by the
-      SizeBasedRollingPolicy, logback expects a rather precise
-      format:
-      </p>
-      
-      <ul>
-        <li>The number has to be an integer</li>
-        <li>You can add 'KB', 'MB' or 'GB' after the number.
-        </li>
-      </ul>
-      
-      <p>Here are some correct values: 500KB, 15MB, 2GB.</p>
-      
-      <table border="0">
-        <tr>
-          <td align="right">
-            <a href="#top">[top]</a>
-          </td>
-        </tr>
-      </table>
-      <hr />
-      
-    </dd>
-    <dt>
-      <a name="rfa_no_tp">No <code>TriggeringPolicy</code> was set
-      for the <code>RollingFileAppender</code>.
+    </li>
+    <li>
+      <a
+       href="http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.html"><code>TimeBasedRollingPolicy</code>
       </a>
-    </dt>
+    </li>
+  </ul>
+  
+  <p>Please note that the <code>TimeBasedRollingPolicy</code>
+  is a TriggeringPolicy <em>and</em> and
+  <code>RollingPolicy</code> at the same time.
+  </p>
+      
+  <hr />
+      
+
+  <p>
+    <a name="rfa_no_rp" href="#rfa_no_rp">No <code>RollingPolicy</code> was set
+    for the <code>RollingFileAppender</code>.
+    </a>
+  </p>
+  
+  <p>The <code>RollingFileAppender</code> must be set up with
+  a <code>RollingPolicy</code>. It permits the Appender to
+  know what to do when a rollover is requested.
+  </p>
+    
+  <p>To find more information about <code>RollingPolicy</code>
+  objects, please read the following javadocs:
+  </p>
     
-    <dd>
-      <p>The <code>RollingFileAppender</code> must be set up with a
-      <code>TriggeringPolicy</code>. It permits the Appender to know
-      when the rollover must be activated.
-      </p>
-      
-      <p>To find more information about <code>TriggeringPolicy</code>
-      objects, please read the following javadocs:
-      </p>
-      
-      <ul>
-        <li>
-          <a
-           href="http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/SizeBasedTriggeringPolicy.html"><code>SizeBasedTriggeringPolicy</code>
-          </a>
-        </li>
-        <li>
-          <a
-           href="http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.html"><code>TimeBasedRollingPolicy</code>
-          </a>
-        </li>
-      </ul>
-      
-      <p>Please note that the <code>TimeBasedRollingPolicy</code>
-      is a TriggeringPolicy <em>and</em> and
-      <code>RollingPolicy</code> at the same time.
-      </p>
-      
-      
-      <table border="0">
-        <tr>
-          <td align="right">
-            <a href="#top">[top]</a>
-          </td>
-        </tr>
-      </table>
-      <hr />
-      
-    </dd>
-    <dt>
-      <a name="rfa_no_rp">No <code>RollingPolicy</code> was set
-      for the <code>RollingFileAppender</code>.
+  <ul>
+    <li>
+      <a href="http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/FixedWindowRollingPolicy.html">
+        <code>FixedWindowRollingPolicy</code>
       </a>
-    </dt>
-    
-    <dd>
-      <p>The <code>RollingFileAppender</code> must be set up with
-      a <code>RollingPolicy</code>. It permits the Appender to
-      know what to do when a rollover is requested.
-      </p>
-      
-      <p>To find more information about <code>RollingPolicy</code>
-      objects, please read the following javadocs:
-      </p>
-      
-      <ul>
-        <li>
-          <a href="http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/FixedWindowRollingPolicy.html">
-            <code>FixedWindowRollingPolicy</code>
-          </a>
-        </li>
-        <li>
-          <a href="http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.html">
-            <code>TimeBasedRollingPolicy</code>
-          </a>
-        </li>
-      </ul>
-      
-      <p>Please note that the <code>TimeBasedRollingPolicy</code> is a
-      <code>TriggeringPolicy</code> <em>and</em> and RollingPolicy at
-      the same time.
-      </p>
-
-      
-      <table border="0">
-        <tr>
-          <td align="right">
-                <a href="#top">[top]</a>
-          </td>
-        </tr>
-          </table>
-          
-    </dd>    
+    </li>
+    <li>
+      <a href="http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.html">
+        <code>TimeBasedRollingPolicy</code>
+      </a>
+    </li>
+  </ul>
+  
+  <p>Please note that the <code>TimeBasedRollingPolicy</code> is a
+  <code>TriggeringPolicy</code> <em>and</em> and RollingPolicy at
+  the same time.
+  </p>
+  
+  
+  <hr/>
+  
+  
+  <p><a name="syslog_layout" href="#syslog_layout"> SyslogAppender
+  does not admit a layout parameter.</a>
+  </p>
 
-    
-    
-    
 
-  </dl>
+  <p>Given that the format of a syslog request follows strict rules,
+  you cannot freely specify the layout to be used with
+  SyslogAppender. However, you can use <span
+  class="option">SuffixPattern</span> option instead to influence the
+  contents of the message sent to the syslog daemon.
+  </p>
+  
+  <p>For more information on SyslogAppeder please refer to the <a
+  href="manual/appenders.html#SyslogAppender">its documentation.</a>
+  </p>
 
+  <hr/>
+  
+  
     <script src="templates/footer.js"></script>
   </div>
 </body>

Modified: logback/trunk/logback-site/src/site/pages/manual/appenders.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/manual/appenders.html	(original)
+++ logback/trunk/logback-site/src/site/pages/manual/appenders.html	Thu Apr 17 16:52:22 2008
@@ -2707,9 +2707,12 @@
 			The gain is a <em>10</em> factor. 
 		</p>
 
-		<a name="SyslogAppender"></a>
-		<h3>SyslogAppender</h3>
-		
+		<h3>
+      <a name="SyslogAppender" href="#SyslogAppender">
+      SyslogAppender
+      </a>
+    </h3>
+
 		<p>
 			The syslog protocol is a very simple protocol: a syslog sender sends a small 
 			message to a syslog receiver. 
@@ -2718,9 +2721,7 @@
 			<a href="../xref/ch/qos/logback/classic/net/SyslogAppender.html"><code>SyslogAppender</code></a>.
 		</p>
 		
-		<p>
-			Here are its options:
-		</p>
+		<p>Here are the options upi can pass to a SyslogAppender.</p>
 
 		<table class="bodyTable">
 			<tr class="a">
@@ -2777,21 +2778,22 @@
 					</p>
 				</td>
 			</tr>
-			<tr class="a">
-				<td>
-					<b>
-						<span class="option">SuffixPattern</span>
-					</b>
+      <tr class="a">
+        <td>
+          <b>
+            <span class="option">SuffixPattern</span>
+          </b>
 				</td>
 				<td>
 					<code>String</code>
 				</td>
 				<td>
-					<p>
-						The <span class="option">SuffixPattern</span> option specifies the format of the 
-						non-standardized part the message sent to the syslog server. By default, its value
-						is <em>[%thread] %logger %msg %exception</em>. Any value that a <code>PatternLayout</code>
-						could use is a correct <span class="option">SuffixPattern</span>.
+					<p>The <span class="option">SuffixPattern</span> option
+					specifies the format of the non-standardized part the
+					message sent to the syslog server. By default, its value is
+					<em>[%thread] %logger %msg</em>. Any value that a
+					<code>PatternLayout</code> could use is a correct <span
+					class="option">SuffixPattern</span> value.
 					</p>
 				</td>
 			</tr>
@@ -2822,7 +2824,7 @@
     class="ch.qos.logback.classic.net.SyslogAppender">
     &lt;SyslogHost>remote_home&lt;/SyslogHost>
     &lt;Facility>AUTH&lt;/Facility>
-    &lt;SuffixPattern>%-4relative [%thread] %-5level - %msg&lt;/SuffixPattern>
+    &lt;SuffixPattern>[%thread] %logger %msg&lt;/SuffixPattern>
   &lt;/appender>
 
   &lt;root>
@@ -2831,21 +2833,21 @@
   &lt;/root>
 &lt;/configuration></pre></div>
 
-		<p>
-			When testing this configuration, one should verify that the remote syslog daemon
-			accepts requests from an external source. Experience shows that syslog daemons
-			usually deny such requests by default.
+		<p>When testing this configuration, you should verify that the
+		remote syslog daemon accepts requests from an external
+		source. Experience shows that, by default, syslog daemons usually
+		deny requests coming via a network connection.
 		</p>
 		
 		
 		<a name="Access"></a>
 		<h2>Logback Access</h2>
 		
-		<p>
-			Most of the appenders found in logback classic can be used within
-			logback access. They function mostly in the same way as their logback
-			classic counterpart. In the next section, we will cover their use, but will
-			focuse on the differences with the classic appenders.
+		<p>Most of the appenders found in logback classic can be used
+		within logback access. They function mostly in the same way as
+		their logback classic counterpart. In the next section, we will
+		cover their use, but will focuse on the differences with the
+		classic appenders.
 		</p>
 		
   	<a name="AccessSocketAppender"/>



More information about the logback-dev mailing list