[logback-dev] svn commit: r2105 - in logback/trunk: logback-access/src/main/java/ch/qos/logback/access/joran logback-classic/src/main/java/ch/qos/logback/classic/boolex logback-classic/src/main/java/ch/qos/logback/classic/joran logback-classic/src/main/java/ch/qos/logback/classic/net logback-classic/src/test/input/joran logback-classic/src/test/input/joran/smtp logback-classic/src/test/java/ch/qos/logback/classic/joran logback-classic/src/test/java/ch/qos/logback/classic/net logback-core/src/main/java/ch/qos/logback/core/filter logback-core/src/main/java/ch/qos/logback/core/joran/action logback-core/src/main/java/ch/qos/logback/core/net logback-examples/src/main/java/chapter4/conf logback-examples/src/main/java/chapter4/db logback-examples/src/main/java/chapter4/mail logback-examples/src/main/java/chapter4/socket logback-examples/src/main/java/chapter5 logback-examples/src/main/java/chapter6 logback-site/src/site/pages logback-site/src/site/pages/manual logback-site/src/site/resou rces

noreply.ceki at qos.ch noreply.ceki at qos.ch
Sat Dec 27 16:55:34 CET 2008


Author: ceki
Date: Sat Dec 27 16:55:34 2008
New Revision: 2105

Added:
   logback/trunk/logback-classic/src/test/input/joran/smtp/
   logback/trunk/logback-classic/src/test/input/joran/smtp/customEvaluator.xml
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/CounterBasedEvaluator.java
   logback/trunk/logback-examples/src/main/java/chapter6/GoMDC.java
      - copied unchanged from r1945, /logback/trunk/logback-examples/src/main/java/chapter5/GoMDC.java
   logback/trunk/logback-examples/src/main/java/chapter6/mdcfilter.xml
      - copied unchanged from r2104, /logback/trunk/logback-examples/src/main/java/chapter5/mdcfilter.xml
Removed:
   logback/trunk/logback-examples/src/main/java/chapter5/GoMDC.java
   logback/trunk/logback-examples/src/main/java/chapter5/mdcfilter.xml
Modified:
   logback/trunk/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnErrorEvaluator.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java
   logback/trunk/logback-classic/src/test/input/joran/simpleEvaluator.xml
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java
   logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java
   logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java
   logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-Console.xml
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSQueue.xml
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSTopic.xml
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-PrudentTimeBasedRolling.xml
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingFixedWindow.xml
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingSizeBased.xml
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingTimeBased.xml
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-fileAppender.xml
   logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-syslog.xml
   logback/trunk/logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource-and-pooling.xml
   logback/trunk/logback-examples/src/main/java/chapter4/db/append-toMySQL-with-driverManager.xml
   logback/trunk/logback-examples/src/main/java/chapter4/db/append-with-datasource.xml
   logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSSL.xml
   logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSTARTTLS.xml
   logback/trunk/logback-examples/src/main/java/chapter4/mail/mail1.xml
   logback/trunk/logback-examples/src/main/java/chapter4/socket/client1.xml
   logback/trunk/logback-examples/src/main/java/chapter5/callerEvaluatorConfig.xml
   logback/trunk/logback-examples/src/main/java/chapter5/exceptionEvaluatorConfig.xml
   logback/trunk/logback-examples/src/main/java/chapter5/mySampleConverterConfig.xml
   logback/trunk/logback-examples/src/main/java/chapter5/sampleLayoutConfig.xml
   logback/trunk/logback-examples/src/main/java/chapter5/sampleLayoutConfig2.xml
   logback/trunk/logback-site/src/site/pages/dependencies.html
   logback/trunk/logback-site/src/site/pages/documentation.html
   logback/trunk/logback-site/src/site/pages/manual/appenders.html
   logback/trunk/logback-site/src/site/pages/manual/layouts.html
   logback/trunk/logback-site/src/site/pages/support.html
   logback/trunk/logback-site/src/site/resources/logback.ppt

Log:

- cleaned up config files so that "level" is an XML attribute and not
  an XML element

- updated Gmail related examples

- LBCLASSIC-100

  Evaluators are now wired into an appender automatically (implicit
  rules) without the help of EvaluatorAction. EvaluatorAction is now
  only needed for global evaluator elements.

  It follows that name attribute is necessary only for global
  evaluators. Embedded evaluators no longer need a name.

  EvaluatorAction has been modified to accept evaluators of any type
  and not just JaninoEvaluators.


Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java
==============================================================================
--- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java	(original)
+++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java	Sat Dec 27 16:55:34 2008
@@ -38,7 +38,7 @@
     rs.addRule(new Pattern("configuration/appender/sift"), new SiftAction());
     rs.addRule(new Pattern("configuration/appender/sift/*"), new NOPAction());
     
-    rs.addRule(new Pattern("*/evaluator"), new EvaluatorAction());
+    rs.addRule(new Pattern("configuration/evaluator"), new EvaluatorAction());
   }
 
 

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnErrorEvaluator.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnErrorEvaluator.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnErrorEvaluator.java	Sat Dec 27 16:55:34 2008
@@ -14,8 +14,19 @@
 import ch.qos.logback.core.boolex.EvaluationException;
 import ch.qos.logback.core.boolex.EventEvaluatorBase;
 
+/**
+ * Evaluates to true when the logging event passed as parameter has level ERROR
+ * or higher.
+ * 
+ * @author Ceki Gülcü
+ * 
+ */
 public class OnErrorEvaluator extends EventEvaluatorBase<LoggingEvent> {
 
+  /**
+   * Return true if event passed as parameter has level ERROR or higher, returns
+   * false otherwise.
+   */
   public boolean evaluate(LoggingEvent event) throws NullPointerException,
       EvaluationException {
     return event.getLevel().levelInt >= Level.ERROR_INT;

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java	Sat Dec 27 16:55:34 2008
@@ -48,7 +48,7 @@
 
     rs.addRule(new Pattern("configuration/contextName"), new ContextNameAction());
     rs.addRule(new Pattern("configuration/insertFromJNDI"), new InsertFromJNDIAction());
-    rs.addRule(new Pattern("*/evaluator"), new EvaluatorAction());
+    rs.addRule(new Pattern("configuration/evaluator"), new EvaluatorAction());
 
     rs.addRule(new Pattern("configuration/appender/sift"), new SiftAction());
     rs.addRule(new Pattern("configuration/appender/sift/*"), new NOPAction());

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java	Sat Dec 27 16:55:34 2008
@@ -11,7 +11,7 @@
 package ch.qos.logback.classic.net;
 
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.boolex.JaninoEventEvaluator;
+import ch.qos.logback.classic.boolex.OnErrorEvaluator;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.Layout;
 import ch.qos.logback.core.boolex.EventEvaluator;
@@ -33,7 +33,6 @@
 
   // value "%logger{20} - %m" is referenced in the docs!
   static final String DEFAULT_SUBJECT_PATTERN = "%logger{20} - %m";
-  static final String DEFAULT_EVALUATOR_EXPRESSION = "level >= ERROR";
   
   private int bufferSize = 512;
   protected CyclicBuffer<LoggingEvent> cb = new CyclicBuffer<LoggingEvent>(bufferSize);
@@ -49,12 +48,11 @@
   
   public void start() {    
     if (eventEvaluator == null) {
-      JaninoEventEvaluator jee = new JaninoEventEvaluator();
-      jee.setContext(getContext());
-      jee.setExpression(DEFAULT_EVALUATOR_EXPRESSION);
-      jee.setName("SMTPAppender's default event evaluator");
-      jee.start();
-      this.eventEvaluator = jee;      
+      OnErrorEvaluator onError = new OnErrorEvaluator();
+      onError.setContext(getContext());
+      onError.setName("onError");
+      onError.start();
+      this.eventEvaluator = onError;      
     }
     super.start();
   }

Modified: logback/trunk/logback-classic/src/test/input/joran/simpleEvaluator.xml
==============================================================================
--- logback/trunk/logback-classic/src/test/input/joran/simpleEvaluator.xml	(original)
+++ logback/trunk/logback-classic/src/test/input/joran/simpleEvaluator.xml	Sat Dec 27 16:55:34 2008
@@ -1,22 +1,10 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE configuration>
-
 <configuration>
-
   <evaluator name="msgEval">
-
-   <Expression>m.matches(message)</Expression>
-
-   <matcher>
-     <Name>m</Name>
-     <regex>^hello.*</regex>
-     <CaseSensitive>false</CaseSensitive>
-   </matcher>
-
-  
+    <Expression>m.matches(message)</Expression>
+    <matcher>
+      <Name>m</Name>
+      <regex>^hello.*</regex>
+      <CaseSensitive>false</CaseSensitive>
+    </matcher>
   </evaluator>
-
-  
-  
 </configuration>
-  
\ No newline at end of file

Added: logback/trunk/logback-classic/src/test/input/joran/smtp/customEvaluator.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/src/test/input/joran/smtp/customEvaluator.xml	Sat Dec 27 16:55:34 2008
@@ -0,0 +1,20 @@
+<configuration>
+
+  <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
+    <SMTPHost>localhost</SMTPHost>
+    <SMTPPort>${port}</SMTPPort>
+    <To>nospam at qos.ch</To>
+    <From>user at host.dom</From>
+    <Subject>%logger - %m</Subject>
+    <evaluator class="ch.qos.logback.classic.net.CounterBasedEvaluator">
+      <limit>2</limit>
+    </evaluator>
+    <layout class="ch.qos.logback.classic.PatternLayout">
+      <Pattern>%message</Pattern>
+    </layout>
+  </appender>
+
+  <root level="debug">
+    <appender-ref ref="EMAIL" />
+  </root>
+</configuration>

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java	Sat Dec 27 16:55:34 2008
@@ -60,18 +60,14 @@
     jc.setContext(loggerContext);
     jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/ignore.xml");
     
-    //StatusPrinter.print(loggerContext.getStatusManager());
-    
     Map evalMap = (Map) loggerContext.getObject(CoreConstants.EVALUATOR_MAP);
     assertNotNull(evalMap);
-    //StatusPrinter.print(loggerContext.getStatusManager());
     
     Logger logger = loggerContext.getLogger("xx");
     
     JaninoEventEvaluator evaluator = (JaninoEventEvaluator) evalMap.get("IGNORE_EVAL");
     LoggingEvent event = new LoggingEvent("foo", logger, Level.DEBUG, "Hello world",null, null);
-    //StatusPrinter.print(loggerContext.getStatusManager());
-    
+
     Marker ignoreMarker = MarkerFactory.getMarker("IGNORE");
     event.setMarker(ignoreMarker);
     assertTrue(evaluator.evaluate(event));

Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/CounterBasedEvaluator.java
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/CounterBasedEvaluator.java	Sat Dec 27 16:55:34 2008
@@ -0,0 +1,72 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * 
+ * Copyright (C) 1999-2006, QOS.ch
+ * 
+ * This library is free software, you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation.
+ */
+
+package ch.qos.logback.classic.net;
+
+import ch.qos.logback.core.boolex.EvaluationException;
+import ch.qos.logback.core.boolex.EventEvaluator;
+import ch.qos.logback.core.spi.ContextAwareBase;
+
+/**
+ * A simple EventEvaluator implementation that triggers email transmission after
+ * a given number of events occur, regardless of event level.
+ * 
+ * <p>By default, the limit is 1024.
+ */
+public class CounterBasedEvaluator extends ContextAwareBase implements EventEvaluator {
+
+  static int DEFAULT_LIMIT = 1024;
+  int limit = DEFAULT_LIMIT;
+  int counter = 0;
+  String name;
+  boolean started;
+
+  public boolean evaluate(Object event) throws NullPointerException,
+      EvaluationException {
+    counter++;
+
+    if (counter == limit) {
+      counter = 0;
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public boolean isStarted() {
+    return started;
+  }
+
+  public void start() {
+    started = true;
+  }
+
+  public void stop() {
+    started = false;
+  }
+
+  public int getLimit() {
+    return limit;
+  }
+
+  public void setLimit(int limit) {
+    this.limit = limit;
+  }
+  
+  
+}

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java	Sat Dec 27 16:55:34 2008
@@ -4,6 +4,9 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.io.IOException;
+
+import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 
@@ -17,9 +20,12 @@
 import ch.qos.logback.classic.PatternLayout;
 import ch.qos.logback.classic.html.HTMLLayout;
 import ch.qos.logback.classic.html.XHTMLEntityResolver;
+import ch.qos.logback.classic.joran.JoranConfigurator;
 import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.util.TeztConstants;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.Layout;
+import ch.qos.logback.core.joran.spi.JoranException;
 import ch.qos.logback.core.testUtil.RandomUtil;
 
 import com.icegreen.greenmail.util.GreenMail;
@@ -32,7 +38,8 @@
   GreenMail greenMail;
   SMTPAppender smtpAppender;
   LoggerContext lc = new LoggerContext();
-
+  Logger logger = lc.getLogger(this.getClass());
+  
   static final String TEST_SUBJECT = "test subject";
   static final String HEADER = "HEADER\n";
   static final String FOOTER = "FOOTER\n";
@@ -43,8 +50,13 @@
         ServerSetup.PROTOCOL_SMTP);
     greenMail = new GreenMail(serverSetup);
     greenMail.start();
-    buildSMTPAppender();
   }
+  
+  @After
+  public void tearDown() throws Exception {
+    greenMail.stop();
+  }
+  
 
   void buildSMTPAppender() throws Exception {
     smtpAppender = new SMTPAppender();
@@ -78,26 +90,28 @@
     return layout;
   }
 
-  @After
-  public void tearDown() throws Exception {
+
+
+  private MimeMultipart verify(String subject) throws MessagingException, IOException {
+    MimeMessage[] mma = greenMail.getReceivedMessages();
+    assertNotNull(mma);
+    assertEquals(1, mma.length);
+    MimeMessage mm = mma[0];
+    // http://jira.qos.ch/browse/LBCLASSIC-67
+    assertEquals(subject, mm.getSubject());
+    return (MimeMultipart) mm.getContent();
   }
 
   @Test
   public void smoke() throws Exception {
+    buildSMTPAppender();
     smtpAppender.setLayout(buildPatternLayout(lc));
     smtpAppender.start();
-    Logger logger = lc.getLogger("test");
     logger.addAppender(smtpAppender);
     logger.debug("hello");
     logger.error("en error", new Exception("an exception"));
-    MimeMessage[] mma = greenMail.getReceivedMessages();
-    assertNotNull(mma);
-    assertEquals(1, mma.length);
-    MimeMessage mm = mma[0];
-    // http://jira.qos.ch/browse/LBCLASSIC-67
-    assertEquals(TEST_SUBJECT, mm.getSubject());
-
-    MimeMultipart mp = (MimeMultipart) mm.getContent();
+    
+    MimeMultipart mp =  verify(TEST_SUBJECT);
     String body = GreenMailUtil.getBody(mp.getBodyPart(0));
     assertTrue(body.startsWith(HEADER.trim()));
     assertTrue(body.endsWith(FOOTER.trim()));
@@ -105,26 +119,20 @@
 
   @Test
   public void html() throws Exception {
+    buildSMTPAppender();
     smtpAppender.setLayout(buildHTMLLayout(lc));
     smtpAppender.start();
-    Logger logger = lc.getLogger("test");
     logger.addAppender(smtpAppender);
     logger.debug("hello");
     logger.error("en error", new Exception("an exception"));
-    MimeMessage[] mma = greenMail.getReceivedMessages();
-    assertNotNull(mma);
-    assertEquals(1, mma.length);
-    MimeMessage mm = mma[0];
-    assertEquals(TEST_SUBJECT, mm.getSubject());
-
-    MimeMultipart mp = (MimeMultipart) mm.getContent();
-
+    MimeMultipart mp =  verify(TEST_SUBJECT);
+    
     // verify strict adherence to xhtml1-strict.dtd
     SAXReader reader = new SAXReader();
     reader.setValidation(true);
     reader.setEntityResolver(new XHTMLEntityResolver());
     reader.read(mp.getBodyPart(0).getInputStream());
-    // System.out.println(GreenMailUtil.getBody(mp.getBodyPart(0)));
+
   }
 
   @Test
@@ -132,26 +140,21 @@
    * Checks that even when many events are processed, the output is still
    * conforms to xhtml-strict.dtd.
    * 
-   * Note that SMTPAppender only keeps only 500 or so (=buffer size)
-   * events. So the generated output will be rather short.
+   * Note that SMTPAppender only keeps only 500 or so (=buffer size) events. So
+   * the generated output will be rather short.
    */
   public void htmlLong() throws Exception {
+    buildSMTPAppender();
     smtpAppender.setLayout(buildHTMLLayout(lc));
     smtpAppender.start();
-    Logger logger = lc.getLogger("test");
     logger.addAppender(smtpAppender);
     for (int i = 0; i < CoreConstants.TABLE_ROW_LIMIT * 3; i++) {
       logger.debug("hello " + i);
     }
     logger.error("en error", new Exception("an exception"));
-    MimeMessage[] mma = greenMail.getReceivedMessages();
-    assertNotNull(mma);
-    assertEquals(1, mma.length);
-    MimeMessage mm = mma[0];
-    assertEquals(TEST_SUBJECT, mm.getSubject());
-
-    MimeMultipart mp = (MimeMultipart) mm.getContent();
-
+    
+    MimeMultipart mp =  verify(TEST_SUBJECT);
+    
     // verify strict adherence to xhtml1-strict.dtd
     SAXReader reader = new SAXReader();
     reader.setValidation(true);
@@ -159,4 +162,25 @@
     reader.read(mp.getBodyPart(0).getInputStream());
   }
 
+  private void configure(String file) throws JoranException {
+    JoranConfigurator jc = new JoranConfigurator();
+    jc.setContext(lc);
+    System.out.println("port="+port);
+    lc.putProperty("port", "" + port);
+    jc.doConfigure(file);
+  }
+
+  @Test
+  public void testCustomEvaluator() throws  Exception {
+    configure(TeztConstants.TEST_DIR_PREFIX
+        + "input/joran/smtp/customEvaluator.xml");
+    
+    logger.debug("hello");
+    String msg2 = "world";
+    logger.debug(msg2);
+    logger.debug("invisible");
+    MimeMultipart mp =  verify(this.getClass().getName()+ " - "+msg2);
+    String body = GreenMailUtil.getBody(mp.getBodyPart(0));
+    assertEquals("helloworld", body);
+  }
 }

Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java	(original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java	Sat Dec 27 16:55:34 2008
@@ -5,41 +5,39 @@
 import ch.qos.logback.core.spi.FilterReply;
 
 /**
- * The value of the {@link #onMatch} and {@link #onMismatch} attributes is set to 
- * {@link Filter.NEUTRAL}, so that a badly configured evaluator filter doesn't 
- * disturb the functionning of the chain.
- * </p>
- * <p>
- * It is expected that one of the two attributes will have its value changed to
- * {@link Filter.ACCEPT} or {@link Filter.DENY}. That way, it is possible to decide if 
- * a given result must be returned after the evaluation either failed or succeeded.
- * </p>
+ * The value of the {@link #onMatch} and {@link #onMismatch} attributes is set
+ * to {@link Filter.NEUTRAL}, so that a badly configured evaluator filter does
+ * not disturb the functioning of the filter chain. 
  * 
- * For more information about filters, please refer to the online manual at
+ * <p>It is expected that one of the two attributes will have its value changed
+ * to {@link Filter.ACCEPT} or {@link Filter.DENY}. That way, it is possible to
+ * decide if a given result must be returned after the evaluation either failed
+ * or succeeded.
+ * 
+ * 
+ * <p> For more information about filters, please refer to the online manual at
  * http://logback.qos.ch/manual/filters.html
  * 
  * @author Ceki G&uuml;lc&uuml;
  * @author S&eacute;bastien Pennec
  */
-
 public class EvaluatorFilter<E> extends AbstractMatcherFilter<E> {
 
   EventEvaluator<E> evaluator;
-    
+
   @Override
   public void start() {
-    if(evaluator != null) {
+    if (evaluator != null) {
       super.start();
     } else {
-      addError("No evaluator set for filter "+this.getName());
+      addError("No evaluator set for filter " + this.getName());
     }
   }
-  
+
   public EventEvaluator<E> getEvaluator() {
     return evaluator;
   }
 
-                 
   public void setEvaluator(EventEvaluator<E> evaluator) {
     this.evaluator = evaluator;
   }
@@ -47,7 +45,7 @@
   public FilterReply decide(E event) {
     // let us not throw an exception
     // see also bug #17.
-    if(!isStarted() || !evaluator.isStarted()) {
+    if (!isStarted() || !evaluator.isStarted()) {
       return FilterReply.NEUTRAL;
     }
     try {
@@ -57,7 +55,7 @@
         return onMismatch;
       }
     } catch (EvaluationException e) {
-      addError("Evaluator "+evaluator.getName()+" threw an exception", e);
+      addError("Evaluator " + evaluator.getName() + " threw an exception", e);
       return FilterReply.NEUTRAL;
     }
   }

Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java	(original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java	Sat Dec 27 16:55:34 2008
@@ -16,7 +16,6 @@
 
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.boolex.EventEvaluator;
-import ch.qos.logback.core.filter.EvaluatorFilter;
 import ch.qos.logback.core.joran.spi.InterpretationContext;
 import ch.qos.logback.core.spi.LifeCycle;
 import ch.qos.logback.core.util.OptionHelper;
@@ -63,11 +62,6 @@
       evaluator.setContext(this.context);
       evaluator.setName(evaluatorName);
 
-      if (ec.getObjectStack().size() > 0
-          && ec.peekObject() instanceof EvaluatorFilter) {
-        ((EvaluatorFilter) ec.peekObject()).setEvaluator(evaluator);
-      }
-
       ec.pushObject(evaluator);
       addInfo("Adding evaluator named [" + evaluatorName
           + "] to the object stack");

Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java	(original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java	Sat Dec 27 16:55:34 2008
@@ -36,12 +36,8 @@
  * An abstract class that provides support for sending events to an email
  * address.
  * 
- * <p>
- * Authentication through plain user password is supported. Both STARTTLS and SSL are 
- * also supported. Note that STARTTLS differs from SSL in that, in STARTTLS, the connection 
- * is non-encrypted and only after the STARTTLS command is issued by the client 
- * (if the server supports it) does the connection switch to SSL. In SSL mode, the connection 
- * is SSL from the start.
+ * <p>See http://logback.qos.ch/manual/appenders.html#SMTPAppender for further
+ * documentation.
  * 
  * @author Ceki G&uuml;lc&uuml;
  * @author S&eacute;bastien Pennec
@@ -49,8 +45,6 @@
  */
 public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
 
-  // private final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
-
   protected Layout<E> layout;
   protected Layout<E> subjectLayout;
 
@@ -113,7 +107,7 @@
     }
 
     // props.put("mail.debug", "true");
-    
+
     Session session = Session.getInstance(props, loginAuthenticator);
     msg = new MimeMessage(session);
 
@@ -161,9 +155,8 @@
   /**
    * This method determines if there is a sense in attempting to append.
    * 
-   * <p>
-   * It checks whether there is a set output target and also if there is a set
-   * layout. If these checks fail, then the boolean value <code>false</code>
+   * <p> It checks whether there is a set output target and also if there is a
+   * set layout. If these checks fail, then the boolean value <code>false</code>
    * is returned.
    */
   public boolean checkEntryConditions() {

Modified: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-Console.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-Console.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-Console.xml	Sat Dec 27 16:55:34 2008
@@ -7,8 +7,7 @@
     </layout>
   </appender>
 
-  <root>
-    <level value="debug" />
+  <root level="debug">
     <appender-ref ref="STDOUT" />
   </root>
 </configuration>

Modified: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSQueue.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSQueue.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSQueue.xml	Sat Dec 27 16:55:34 2008
@@ -12,8 +12,7 @@
 		<QueueBindingName>MyQueue</QueueBindingName>
 	</appender>
 
-	<root>
-		<level value="debug" />
+	<root level="debug">
 		<appender-ref ref="Queue" />
 	</root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSTopic.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSTopic.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-JMSTopic.xml	Sat Dec 27 16:55:34 2008
@@ -12,8 +12,7 @@
 		<TopicBindingName>MyTopic</TopicBindingName>
 	</appender>
 
-	<root>
-		<level value="debug" />
+  <root level="debug">
 		<appender-ref ref="Topic" />
 	</root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-PrudentTimeBasedRolling.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-PrudentTimeBasedRolling.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-PrudentTimeBasedRolling.xml	Sat Dec 27 16:55:34 2008
@@ -11,10 +11,9 @@
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</Pattern>
    </layout>
- </appender> 
+  </appender> 
 
- <root>
-   <level value="debug" />
-   <appender-ref ref="FILE" />
- </root>
+  <root level="debug">
+    <appender-ref ref="FILE" />
+  </root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingFixedWindow.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingFixedWindow.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingFixedWindow.xml	Sat Dec 27 16:55:34 2008
@@ -15,8 +15,7 @@
     </layout>
   </appender>
 	
-  <root>
-    <level value="debug" />
+  <root level="debug">
     <appender-ref ref="FILE" />
   </root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingSizeBased.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingSizeBased.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingSizeBased.xml	Sat Dec 27 16:55:34 2008
@@ -17,8 +17,7 @@
 		</layout>
 	</appender>
 	
-	<root>
-		<level value="debug" />
+	<root level="debug">
 		<appender-ref ref="FILE" />
 	</root>
 </configuration>

Modified: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingTimeBased.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingTimeBased.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-RollingTimeBased.xml	Sat Dec 27 16:55:34 2008
@@ -12,8 +12,7 @@
    </layout>
  </appender> 
 
- <root>
-   <level value="debug" />
+ <root level="debug">
    <appender-ref ref="FILE" />
  </root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-fileAppender.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-fileAppender.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-fileAppender.xml	Sat Dec 27 16:55:34 2008
@@ -9,9 +9,7 @@
 		</layout>
 	</appender>
 	
-	<root>
-		<level value="debug" />
+	<root level="debug">
 		<appender-ref ref="FILE" />
 	</root>
-</configuration>
-
+</configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-syslog.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-syslog.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/conf/logback-syslog.xml	Sat Dec 27 16:55:34 2008
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
 
   <appender name="SYSLOG"
@@ -8,8 +7,7 @@
     <SuffixPattern>%-4relative [%thread] %-5level - %msg</SuffixPattern>
   </appender>
 	
-	<root>
-		<level value="DEBUG" />
+	<root level="DEBUG">
 		<appender-ref ref="SYSLOG" />
 	</root>
 </configuration>

Modified: logback/trunk/logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource-and-pooling.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource-and-pooling.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource-and-pooling.xml	Sat Dec 27 16:55:34 2008
@@ -13,8 +13,7 @@
 		</connectionSource>
 	</appender>
 
-	<root>
-		<level value="debug" />
+	<root level="debug">
 		<appender-ref ref="DB" />
 	</root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter4/db/append-toMySQL-with-driverManager.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/db/append-toMySQL-with-driverManager.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/db/append-toMySQL-with-driverManager.xml	Sat Dec 27 16:55:34 2008
@@ -11,8 +11,7 @@
 		</connectionSource>
 	</appender>
 	
-	<root>
-		<level value="debug" />
+	<root level="debug">
 		<appender-ref ref="DB" />
 	</root>
 </configuration>

Modified: logback/trunk/logback-examples/src/main/java/chapter4/db/append-with-datasource.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/db/append-with-datasource.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/db/append-with-datasource.xml	Sat Dec 27 16:55:34 2008
@@ -20,8 +20,7 @@
      </connectionSource>
   </appender>
 
-  <root>
-    <level value ="debug"/>
+  <root level="debug">
     <appender-ref ref="DB" />
   </root>  
 </configuration>

Modified: logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSSL.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSSL.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSSL.xml	Sat Dec 27 16:55:34 2008
@@ -1,26 +1,22 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
 <configuration>
 	  
   <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
     <SMTPHost>smtp.gmail.com</SMTPHost>
     <SMTPPort>465</SMTPPort>
     <SSL>true</SSL>
-    <Username>USERNAME</Username>
-    <Password>PASSWORD</Password>
-    
+    <Username>YOUR_USERNAME at gmail.com</Username>
+    <Password>YOUR_GMAIL_PASSWORD</Password>
     
     <To>EMAIL-DESTINATION</To>
-    <To>ANOTHER_EMAIL_DESTINATION</To> <!-- a second destination is optional -->
-    <From>SENDER-EMAIL</From>
+    <To>ANOTHER_EMAIL_DESTINATION</To> <!-- additional destinations are possible -->
+    <From>YOUR_USERNAME at gmail.com</From>
     <Subject>TESTING: %logger{20} - %m</Subject>
     <layout class="ch.qos.logback.classic.PatternLayout">
       <Pattern>%date %-5level %logger - %message%n</Pattern>
     </layout>	    
   </appender>
 
-  <root>
-    <level value="debug"/>
+  <root level="debug">
     <appender-ref ref="EMAIL" />
   </root>  
 </configuration>

Modified: logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSTARTTLS.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSTARTTLS.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/mail/gmailSTARTTLS.xml	Sat Dec 27 16:55:34 2008
@@ -1,25 +1,21 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<configuration>
-	  
+<configuration>	  
   <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
     <SMTPHost>smtp.gmail.com</SMTPHost>
     <SMTPPort>587</SMTPPort>
     <STARTTLS>true</STARTTLS>
-    <Username>USERNAME</Username>
-    <Password>PASSWORD</Password>
+    <Username>YOUR_USERNAME at gmail.com</Username>
+    <Password>YOUR_GMAIL_PASSWORD</Password> 
     
     <To>EMAIL-DESTINATION</To>
-    <To>ANOTHER_EMAIL_DESTINATION</To> <!-- a second destination is optional -->
-    <From>SENDER-EMAIL</From>
+    <To>ANOTHER_EMAIL_DESTINATION</To> <!-- additional destinations are possible -->
+    <From>YOUR_USERNAME at gmail.com</From>
     <Subject>TESTING: %logger{20} - %m</Subject>
     <layout class="ch.qos.logback.classic.PatternLayout">
       <Pattern>%date %-5level %logger - %message%n</Pattern>
     </layout>	    
   </appender>
 
-  <root>
-    <level value="debug"/>
+  <root level="debug">
     <appender-ref ref="EMAIL" />
   </root>  
 </configuration>

Modified: logback/trunk/logback-examples/src/main/java/chapter4/mail/mail1.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/mail/mail1.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/mail/mail1.xml	Sat Dec 27 16:55:34 2008
@@ -1,11 +1,9 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
 <configuration>
 	  
   <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
     <SMTPHost>ADDRESS-OF-YOUR-SMTP-HOST</SMTPHost>
     <To>EMAIL-DESTINATION</To>
-    <To>ANOTHER_EMAIL_DESTINATION</To> <!-- a second destination is optional -->
+    <To>ANOTHER_EMAIL_DESTINATION</To> <!-- additional destinations are possible -->
     <From>SENDER-EMAIL</From>
     <Subject>TESTING: %logger{20} - %m</Subject>
     <layout class="ch.qos.logback.classic.PatternLayout">
@@ -13,8 +11,7 @@
     </layout>	    
   </appender>
 
-  <root>
-    <level value="debug"/>
+  <root level="debug">
     <appender-ref ref="EMAIL" />
   </root>  
 </configuration>

Modified: logback/trunk/logback-examples/src/main/java/chapter4/socket/client1.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/socket/client1.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/socket/client1.xml	Sat Dec 27 16:55:34 2008
@@ -13,8 +13,7 @@
     <IncludeCallerData>${includeCallerData}</IncludeCallerData>
   </appender>
 
-  <root>
-    <level value ="debug"/>
+  <root level="debug">
     <appender-ref ref="SOCKET" />
   </root>  
 

Modified: logback/trunk/logback-examples/src/main/java/chapter5/callerEvaluatorConfig.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter5/callerEvaluatorConfig.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter5/callerEvaluatorConfig.xml	Sat Dec 27 16:55:34 2008
@@ -1,19 +1,18 @@
 <configuration>
 
-	<evaluator name="DISPLAY_CALLER_EVAL">
-		<Expression>logger.getName().contains("chapter5") &amp;&amp; message.contains("who calls thee")</Expression>
-	</evaluator>
-	
-  <appender name="STDOUT"
-    class="ch.qos.logback.core.ConsoleAppender">
+  <evaluator name="DISPLAY_CALLER_EVAL">
+    <Expression>
+      logger.getName().contains("chapter5") &amp;&amp; message.contains("who calls thee")
+    </Expression>
+  </evaluator>
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <layout class="ch.qos.logback.classic.PatternLayout">
-      <param name="Pattern"
-        value="%-4relative [%thread] %-5level - %msg%n %caller{2, DISPLAY_CALLER_EVAL}" />
+      <Pattern>%-4relative [%thread] %-5level - %msg%n%caller{2, DISPLAY_CALLER_EVAL}</Pattern>
     </layout>
   </appender>
 
-  <root>
-    <level value="debug" />
+  <root level="debug">
     <appender-ref ref="STDOUT" />
   </root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter5/exceptionEvaluatorConfig.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter5/exceptionEvaluatorConfig.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter5/exceptionEvaluatorConfig.xml	Sat Dec 27 16:55:34 2008
@@ -1,19 +1,16 @@
 <configuration>
 
-	<evaluator name="DISPLAY_EX_EVAL">
-		<Expression>throwable != null &amp;&amp; throwable instanceof chapter5.TestException</Expression>
-	</evaluator>
-	
-  <appender name="STDOUT"
-    class="ch.qos.logback.core.ConsoleAppender">
+  <evaluator name="DISPLAY_EX_EVAL">
+    <Expression>throwable != null &amp;&amp; throwable instanceof chapter5.TestException</Expression>
+  </evaluator>
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <layout class="ch.qos.logback.classic.PatternLayout">
-      <param name="Pattern"
-        value="%-4relative [%thread] %-5level - %msg %ex{full, DISPLAY_EX_EVAL}%n" />
+      <Pattern>%-4relative [%thread] %-5level - %msg%n%ex{full, DISPLAY_EX_EVAL}</Pattern>
     </layout>
   </appender>
 
-  <root>
-    <level value="debug" />
+  <root level="debug">
     <appender-ref ref="STDOUT" />
   </root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter5/mySampleConverterConfig.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter5/mySampleConverterConfig.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter5/mySampleConverterConfig.xml	Sat Dec 27 16:55:34 2008
@@ -5,13 +5,11 @@
   <appender name="STDOUT"
     class="ch.qos.logback.core.ConsoleAppender">
     <layout class="ch.qos.logback.classic.PatternLayout">
-      <param name="Pattern"
-        value="%-4relative [%thread] %sample - %msg%n" />
+      <Pattern>%-4relative [%thread] %sample - %msg%n</Pattern>
     </layout>
   </appender>
 
-  <root>
-    <level value="debug" />
+  <root level="debug">
     <appender-ref ref="STDOUT" />
   </root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter5/sampleLayoutConfig.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter5/sampleLayoutConfig.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter5/sampleLayoutConfig.xml	Sat Dec 27 16:55:34 2008
@@ -5,8 +5,7 @@
     <layout class="chapter5.MySampleLayout" />
   </appender>
 
-  <root>
-    <level value="debug" />
+  <root level="debug">
     <appender-ref ref="STDOUT" />
   </root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-examples/src/main/java/chapter5/sampleLayoutConfig2.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter5/sampleLayoutConfig2.xml	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter5/sampleLayoutConfig2.xml	Sat Dec 27 16:55:34 2008
@@ -8,8 +8,7 @@
     </layout>
   </appender>
 
-  <root>
-    <level value="debug" />
+  <root level="debug">
     <appender-ref ref="STDOUT" />
   </root>
 </configuration>
\ No newline at end of file

Modified: logback/trunk/logback-site/src/site/pages/dependencies.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/dependencies.html	(original)
+++ logback/trunk/logback-site/src/site/pages/dependencies.html	Sat Dec 27 16:55:34 2008
@@ -149,12 +149,7 @@
             <li>Depends on <code>SMTPAppenderBase</code>, and by
             transitivity on <code>SMTPAppenderBase</code>'s
             dependencies.
-            </li>
-
-            <li>Depends on
-            <code>ch.qos.logback.classic.boolex.JaninoEventEvaluator</code>,
-            and by transitivity on Janino.
-            </li>
+            </li>       
           </ul>
         </td>
       </tr>

Modified: logback/trunk/logback-site/src/site/pages/documentation.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/documentation.html	(original)
+++ logback/trunk/logback-site/src/site/pages/documentation.html	Sat Dec 27 16:55:34 2008
@@ -73,9 +73,8 @@
       in OSGI Enterprise Applications</a>, by Ekkehard Gentz.
       
       </li>
-      <li><a href="10reasons.ppt">Top 10 reasons for migrating to
-      logback</a>, by Ceki G&#252;lc&#252; and S&eacute;bastien
-      Pennec.
+      <li><a href="logback.ppt">Logback project</a>, by Ceki
+      G&#252;lc&#252; and S&eacute;bastien Pennec.
       </li>
 
       

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	Sat Dec 27 16:55:34 2008
@@ -411,8 +411,7 @@
     &lt;/layout>
   &lt;/appender></b>
 
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="STDOUT" />
   &lt;/root>
 &lt;/configuration></p>
@@ -586,8 +585,7 @@
     &lt;/layout>
   &lt;/appender></b>
 	
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="FILE" />
   &lt;/root>
 &lt;/configuration></p>
@@ -909,12 +907,11 @@
       &lt;MaxFileSize>5MB&lt;/MaxFileSize>
     &lt;/triggeringPolicy>
     &lt;layout class="ch.qos.logback.classic.PatternLayout">
-      &lt;Pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n&lt;/Pattern>
+      &lt;Pattern>%-4relative [%thread] %-5levelu %logger{35} - %msg%n&lt;/Pattern>
     &lt;/layout>
   &lt;/appender>
 	
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="FILE" />
   &lt;/root>
 &lt;/configuration></p>
@@ -1133,8 +1130,7 @@
     &lt;/layout>
   &lt;/appender> 
 
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="FILE" />
   &lt;/root>
 &lt;/configuration></p>
@@ -1161,8 +1157,7 @@
     &lt;/layout>
   &lt;/appender> 
 
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="FILE" />
   &lt;/root>
 &lt;/configuration></p>
@@ -1245,8 +1240,7 @@
     &lt;/layout>
   &lt;/appender>
 	
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="FILE" />
   &lt;/root>
 &lt;/configuration></p>
@@ -1450,8 +1444,7 @@
     &lt;IncludeCallerData>${includeCallerData}&lt;/IncludeCallerData>
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value ="debug"/>
+  &lt;root level="debug">
     &lt;appender-ref ref="SOCKET" />
   &lt;/root>  
 
@@ -1908,8 +1901,7 @@
     &lt;TopicBindingName>MyTopic&lt;/TopicBindingName>
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="Topic" />
   &lt;/root>
 &lt;/configuration></pre></div>
@@ -1977,26 +1969,24 @@
     &lt;QueueBindingName>MyQueue&lt;/QueueBindingName>
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="Queue" />
   &lt;/root>
 &lt;/configuration></pre></div>		
 		
    <h3><a name="SMTPAppender" href="#SMTPAppender">SMTPAppender</a></h3>
 
-
-		<p>The <a
-		href="../xref/ch/qos/logback/classic/net/SMTPAppender.html"><code>SMTPAppender</code></a>
-		accumulates logging events in a fixed-size buffer and sends them
-		in an email when a user-specified event occurs.  By default, the
-		sending of such email is triggered by an event of level ERROR or
-		higher.
-		</p>
+   <p>The <a
+   href="../xref/ch/qos/logback/classic/net/SMTPAppender.html"><code>SMTPAppender</code></a>
+   accumulates logging events in a fixed-size buffer and sends them in
+   an email after a user-specified event occurs.  By default, the
+   email transmission is -triggered by a logging event of level ERROR
+   or higher.
+   </p>
 		
-		<p>The various properties for <code>SMTPAppender</code> are
-		summarized in the following table.
-		</p>
+   <p>The various properties for <code>SMTPAppender</code> are
+   summarized in the following table.
+	 </p>
 		
 		<table class="bodyTable">
       <tr class="a">
@@ -2059,38 +2049,46 @@
         <td><b><span class="option">BufferSize</span></b></td>
         <td><code>int</code></td>
         <td>
-          The <span class="option">BufferSize</span> option takes a positive 
-          integer representing the maximum number of logging events to collect in a 
-          cyclic buffer. When the <span class="option">BufferSize</span> is reached, 
-          oldest events are deleted as new events are added to the buffer. 
-          The default size of the cyclic buffer is 512.
+          The <span class="option">BufferSize</span> option takes a
+          positive integer representing the maximum number of logging
+          events to collect in a cyclic buffer. When the <span
+          class="option">BufferSize</span> is reached, oldest events
+          are deleted as new events are added to the buffer.  The
+          default size of the cyclic buffer is 512.
         </td>
       </tr>
       <tr >
         <td><b><span class="option">Evaluator</span></b></td>
         <td><code>String</code></td>
         <td>
-          <p>This option is declared by creating a new <code>&lt;EventEvaluator/></code>
-          element. The name of the class that the user wishes to use as the
-          <code>SMTPAppender</code>'s <code>Evaluator</code> can be given
-          by adding an attribute to the newly created element.
+          <p>This option is declared by creating a new
+          <code>&lt;EventEvaluator/></code> element. The name of the
+          class that the user wishes to use as the
+          <code>SMTPAppender</code>'s <code>Evaluator</code> can needs
+          to be specified via the <span class="attr">class</span>
+          attribute.
           </p>
           
-          <p>More details about the use of event evaluators with
-          <code>SMTPAppender</code> follow further down this document.
-          </p>
           
-          <p>In the absence of this option, <code>SMTPAppender</code> is
-          assigned a default event evaluator which triggers email
-          transmission as a response to any event of level
-          <em>ERROR</em> or higher.
+          <p>In the absence of this option, <code>SMTPAppender</code>
+          is assigned an <a
+          href="../xref/ch/qos/logback/classic/boolex/OnErrorEvaluator.html">OnErrorEveluator</a>
+          instance which triggers email transmission when it
+          encounters an event of level <em>ERROR</em> or higher.
           </p>
-          
+
+          <!--
           <p><code>EventEvaluator</code> objects are subclasses of the
           <code>JaninoEventEvaluatorBase</code> which depends on
           Janino. See the <a href="../dependencies.html">dependencies
           page</a> for more information.
           </p>
+          -->
+
+          <p>You can find more information on event evaluators further
+          down this document.
+          </p>
+
         </td>
       </tr>
       <tr class="alt">
@@ -2166,13 +2164,12 @@
 		<code>Email</code> application:
 		</p>	
 		
-<em>Example 4.<span class="autoEx"/>: A sample <code>SMTPAppender</code> configuration (logback-examples/src/main/java/chapter4/mail/mail1.xml)</em>		
-<div class="source"><pre>&lt;configuration>
-	  
+    <em>Example 4.<span class="autoEx"/>: A sample <code>SMTPAppender</code> configuration (logback-examples/src/main/java/chapter4/mail/mail1.xml)</em>		
+    <p class="source">&lt;configuration>	  
   &lt;appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
     &lt;SMTPHost>ADDRESS-OF-YOUR-SMTP-HOST&lt;/SMTPHost>
     &lt;To>EMAIL-DESTINATION&lt;/To>
-    &lt;To>ANOTHER_EMAIL_DESTINATION&lt;/To> &lt;!-- a second destination is optional --&gt;
+    &lt;To>ANOTHER_EMAIL_DESTINATION&lt;/To> &lt;!-- additional destinations are possible --&gt;
     &lt;From>SENDER-EMAIL&lt;/From>
     &lt;Subject>TESTING: %logger{20} - %m&lt;/Subject>
     &lt;layout class="ch.qos.logback.classic.PatternLayout">
@@ -2180,11 +2177,10 @@
     &lt;/layout>	    
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value ="debug"/>
+  &lt;root level="debug">
     &lt;appender-ref ref="EMAIL" />
   &lt;/root>  
-&lt;/configuration></pre></div>
+&lt;/configuration></p>
 
 		<p>Before trying out <code>chapter4.mail.Email</code> application
 		with the above configuration file, you must set the <span
@@ -2346,47 +2342,87 @@
     &lt;layout class="ch.qos.logback.classic.html.HTMLLayout"/>
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value ="debug"/>
+  &lt;root level="debug">
     &lt;appender-ref ref="EMAIL" />
   &lt;/root>  
 &lt;/configuration></pre></div>
 
     
-    <h3>Authentication/STARTTLS/SSL</h3>
 
-    <p>SMTPAppender supports plain user/password authentication as
-    well as both STARTTLS and SSL.
+    <h3><a name="smtpAuthentication"
+    href="#smtpAuthentication">Authentication/STARTTLS/SSL</a></h3>
+
+    <p><code>SMTPAppender</code> supports authentication via plain
+    user passwords as well as both the STARTTLS and SSL
+    protocols. Note that STARTTLS differs from SSL in that, in
+    STARTTLS, the connection is initially non-encrypted and only after
+    the STARTTLS command is issued by the client (if the server
+    supports it) does the connection switch to SSL. In SSL mode, the
+    connection is encrypted right from the start.
     </p>
 
-    <p>The next example shows you how to configure SMTPAppender for
-    gmail with SSL. </p>
+    <h3><a name="gmailSSL" href="#gmailSSL">SMTPAppender configuration
+    for Gmail (SSL)</a></h3>
+
+    <p>The next example shows you how to configure
+    <code>SMTPAppender</code> for Gmail with the SSL protocol. </p>
     
-<em>Example 4.<span class="autoEx"/>: <code>SMTPAppender</code> to GMAIL using SSL (logback-examples/src/main/java/chapter4/mail/gmailSSL.xml)</em>
+    <em>Example 4.<span class="autoEx"/>: <code>SMTPAppender</code> to Gmail using SSL (logback-examples/src/main/java/chapter4/mail/gmailSSL.xml)</em>
 
-<div class="source"><pre>&lt;configuration>
+    <p class="source">&lt;configuration>
   &lt;appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
-    <b>&lt;SMTPHost>smtp.gmail.com&lt;/SMTPHost>
-    &lt;SMTPPort>465&lt;/SMTPPort>
-    &lt;SSL>true&lt;/SSL>
-    &lt;Username>USERNAME at gmail.com&lt;/Username>
-    &lt;Password>PASSWORD&lt;/Password></b>
+    <b>&lt;SMTPHost>smtp.gmail.com&lt;/SMTPHost></b>
+    <b>&lt;SMTPPort>465&lt;/SMTPPort></b>
+    <b>&lt;SSL>true&lt;/SSL></b>
+    <b>&lt;Username>YOUR_USERNAME at gmail.com&lt;/Username></b>
+    <b>&lt;Password>YOUR_GMAIL_PASSWORD&lt;/Password></b>
 
-    &lt;To>${to}&lt;/To>
-    &lt;From>${from}&lt;/From>
-    &lt;layout class="ch.qos.logback.classic.html.HTMLLayout"/>
+    &lt;To>EMAIL-DESTINATION&lt;/To>
+    &lt;To>ANOTHER_EMAIL_DESTINATION&lt;/To> &lt;!-- additional destinations are possible -->
+    &lt;From>YOUR_USERNAME at gmail.com&lt;/From>
+    &lt;Subject>TESTING: %logger{20} - %m&lt;/Subject>
+    &lt;layout class="ch.qos.logback.classic.PatternLayout">
+      &lt;Pattern>%date %-5level %logger{35} - %message%n&lt;/Pattern>
+    &lt;/layout>	    
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value ="debug"/>
+  &lt;root level="debug">
     &lt;appender-ref ref="EMAIL" />
   &lt;/root>  
-&lt;/configuration></pre></div>
+&lt;/configuration></p>
+
+
+    <h3><a name="gmailSTARTTLS" href="#gmailSTARTTLS">SMTPAppender for Gmail
+    (STARTTLS)</a></h3>
+
+    <p>The next example shows you how to configure
+    <code>SMTPAppender</code> for Gmail for the STARTTLS protocol. </p>
+
+    <em>Example 4.<span class="autoEx"/>: <code>SMTPAppender</code> to GMAIL using STARTTLS (logback-examples/src/main/java/chapter4/mail/gmailSTARTTLS.xml)</em>
+
+    <p class="source">&lt;configuration>	  
+  &lt;appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
+    &lt;SMTPHost>smtp.gmail.com&lt;/SMTPHost>
+    &lt;SMTPPort>587&lt;/SMTPPort>
+    &lt;STARTTLS>true&lt;/STARTTLS>
+    &lt;Username>YOUR_USERNAME at gmail.com&lt;/Username>
+    &lt;Password>YOUR_GMAIL_xPASSWORD&lt;/Password>
+    
+    &lt;To>EMAIL-DESTINATION&lt;/To>
+    &lt;To>ANOTHER_EMAIL_DESTINATION&lt;/To> &lt;!-- additional destinations are possible -->
+    &lt;From>YOUR_USERNAME at gmail.com&lt;/From>
+    &lt;Subject>TESTING: %logger{20} - %m&lt;/Subject>
+    &lt;layout class="ch.qos.logback.classic.PatternLayout">
+      &lt;Pattern>%date %-5level %logger - %message%n&lt;/Pattern>
+    &lt;/layout>	    
+  &lt;/appender>
+
+  &lt;root level="debug">
+    &lt;appender-ref ref="EMAIL" />
+  &lt;/root>  
+&lt;/configuration></p>
 
-    <p>For a STARTTLS with gmail refer to the configuration file
-    <em>logback-examples/src/main/java/chapter4/mail/gmailSTARTTLS.xml)</em>
 
-    </p>
 
     <h3>
       <a name="DBAppender" href="#DBAppender">DBAppender</a>
@@ -2691,8 +2727,7 @@
     &lt;/connectionSource>
   &lt;/appender></b>
   
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug" >
     &lt;appender-ref ref="DB" />
   &lt;/root>
 &lt;/configuration></pre></div>
@@ -2779,8 +2814,7 @@
      &lt;/connectionSource>
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value ="debug"/>
+  &lt;root level="debug">
     &lt;appender-ref ref="DB" />
   &lt;/root>  
 &lt;/configuration></pre></div>
@@ -2870,8 +2904,9 @@
 			configuration file, logging events are sent to a MySQL database,
 			without any pooling.
 		</p>
-<em>Example 4.<span class="autoEx"/> <code>DBAppender</code> configuration without pooling (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource.xml)</em>	
-<div class="source"><pre>&lt;configuration>
+    
+    <em>Example 4.<span class="autoEx"/> <code>DBAppender</code> configuration without pooling (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource.xml)</em>	
+    <p class="source">&lt;configuration>
 
   &lt;appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
     &lt;connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
@@ -2885,25 +2920,22 @@
     &lt;/connectionSource>
   &lt;/appender>
     
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="DB" />
   &lt;/root>
-&lt;/configuration</pre></div>
+&lt;/configuration</p>
 
-		<p>
-			With this configuration file, sending 500 logging events to
-			a MySQL database takes a whopping 5 seconds, that is 
-			10 miliseconds per requests. This figure is
-			unacceptable when dealing with large applications.
+		<p>With this configuration file, sending 500 logging events to a
+		MySQL database takes a whopping 5 seconds, that is 10 miliseconds
+		per requests. This figure is unacceptable when dealing with large
+		applications.
 		</p>
 
-		<p>
-			A dedicated external library is necessary to use connection pooling
-			with <code>DBAppender</code>. The next example uses 
-			<a href="http://sourceforge.net/projects/c3p0">c3p0</a>. To be able
-			to use c3p0, one must download it and place <em>c3p0-VERSION.jar</em>
-			in the classpath.
+		<p>A dedicated external library is necessary to use connection
+		pooling with <code>DBAppender</code>. The next example uses <a
+		href="http://sourceforge.net/projects/c3p0">c3p0</a>. To be able
+		to use c3p0, one must download it and place
+		<em>c3p0-VERSION.jar</em> in the classpath.
 		</p>
 
     <em>Example 4.<span class="autoEx"/>: <code>DBAppender</code> configuration with pooling (logback-examples/src/main/java/chapter4/db/append-toMySQL-with-datasource-and-pooling.xml)</em>			
@@ -2922,31 +2954,27 @@
     &lt;/connectionSource>
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="DB" />
   &lt;/root>
 &lt;/configuration></p>
 
-		<p>
-			With this new configuration, sending 500 logging requests to
-			the same MySQL database as previously used takes around 0.5 seconds,
-			for an average time of 1 milisecond per request.
-			The gain is a <em>10</em> factor. 
+		<p>With this new configuration, sending 500 logging requests to
+		the same MySQL database as previously used takes around 0.5
+		seconds, for an average time of 1 milisecond per request.  The
+		gain is a <em>10</em> factor.
 		</p>
 
-		<h3>
-      <a name="SyslogAppender" href="#SyslogAppender">
-      SyslogAppender
-      </a>
+		<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. 
-			The receiver is commonly called <em>syslog daemon</em> or <em>syslog server</em>.
-			Logback can send messages to a remote syslog daemon. This is achieved by using 
-			<a href="../xref/ch/qos/logback/classic/net/SyslogAppender.html"><code>SyslogAppender</code></a>.
+		<p>The syslog protocol is a very simple protocol: a syslog sender
+		sends a small message to a syslog receiver.  The receiver is
+		commonly called <em>syslog daemon</em> or <em>syslog server</em>.
+		Logback can send messages to a remote syslog daemon. This is
+		achieved by using <a
+		href="../xref/ch/qos/logback/classic/net/SyslogAppender.html"><code>SyslogAppender</code></a>.
 		</p>
 		
 		<p>Here are the properties upi can pass to a SyslogAppender.</p>
@@ -3055,8 +3083,7 @@
     &lt;SuffixPattern>[%thread] %logger %msg&lt;/SuffixPattern>
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="STDOUT" />
   &lt;/root>
 &lt;/configuration></pre></div>

Modified: logback/trunk/logback-site/src/site/pages/manual/layouts.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/manual/layouts.html	(original)
+++ logback/trunk/logback-site/src/site/pages/manual/layouts.html	Sat Dec 27 16:55:34 2008
@@ -1181,13 +1181,12 @@
 
   &lt;appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     &lt;layout class="ch.qos.logback.classic.PatternLayout"> 
-      &lt;param name="Pattern" value="%-4relative [%thread] %-5level - %msg%n \
-        <b>%caller{2, DISP_CALLER_EVAL}</b>" /> 
+      &lt;Pattern>%-4relative [%thread] %-5level - %msg%n<b>%caller{2, DISP_CALLER_EVAL}</b>
+      &lt;/Pattern>
     &lt;/layout>
   &lt;/appender>
 
-  &lt;root> 
-    &lt;level value="debug" /> 
+  &lt;root level="debug"> 
     &lt;appender-ref ref="STDOUT" /> 
   &lt;/root>
 &lt;/configuration></pre></div>
@@ -1340,14 +1339,12 @@
   &lt;appender name="STDOUT"
     class="ch.qos.logback.core.ConsoleAppender">
     &lt;layout class="ch.qos.logback.classic.PatternLayout">
-      &lt;param name="Pattern"
-        value="%-4relative [%thread] %-5level - %msg \
-          <b>%ex{full, DISPLAY_EX_EVAL}</b>%n" />
+      &lt;Pattern>%-4relative [%thread] %-5level - %msg%n<b>%ex{full, DISPLAY_EX_EVAL}</b>
+      &lt;/Pattern>
     &lt;/layout>
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="STDOUT" />
   &lt;/root>
 &lt;/configuration></pre></div>
@@ -1453,8 +1450,7 @@
     &lt;/layout>
   &lt;/appender>
 
-  &lt;root>
-    &lt;level value="debug" />
+  &lt;root level="debug">
     &lt;appender-ref ref="STDOUT" />
   &lt;/root>
 &lt;/configuration></pre></div>
@@ -1633,8 +1629,7 @@
     &lt;To>destination.email at domain.net&lt;/To> 
   &lt;/appender&gt;
 
-  &lt;root&gt;
-    &lt;level value="debug" /&gt;
+  &lt;root level="debug">
     &lt;appender-ref ref="SMTP" /&gt;
   &lt;/root&gt;
 &lt;/configuration&gt;</pre></div>
@@ -1660,8 +1655,7 @@
     &lt;/layout>
  &lt;/appender> 
 
- &lt;root>
-   &lt;level value="debug" />
+ &lt;root level="debug">
    &lt;appender-ref ref="FILE" />
  &lt;/root>
 &lt;/configuration></pre></div>

Modified: logback/trunk/logback-site/src/site/pages/support.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/support.html	(original)
+++ logback/trunk/logback-site/src/site/pages/support.html	Sat Dec 27 16:55:34 2008
@@ -19,28 +19,28 @@
     </div>
     <div id="content">
       
-    <h2>Professional support</h2>
+    <h2>Professional Logback Support</h2>
 
     <p>Although the quality of support in the various public logback
-    mailing lists is very good, these are operated on a best-effort
-    basis. If you require guaranteed response times and in-depth
-    advice from developers intimately acquainted with logback, then do
-    consider our professional support package.
+    mailing lists is quite good, these are operated on a best-effort
+    basis. If you require authoritative responses and guaranteed
+    response times, then you should consider our professional support
+    package.
     </p>
 
     <p>As the founders and current maintainers of the logback project,
-    we can offer you highest quality of support. Opting for our
+    we can offer you the highest quality of support. Opting for our
     professional logback support service is a great way to leverage
     the expertise of logback developers.
     </p>
 
-    <p>If your project requires custom appenders or logback
-    extensions, we can also help you.
+    <p>Moreovoer, if your project requires custom appenders or logback
+    extensions, we are likely to be of help.
     </p>
 
-    <p>For a quote for "Professional Support Contract" please do not
-    hesitate to contact us. We will happy to discuss or help you with
-    logging-related issues.</p>
+    <p>For more information about Professional Logback Support do not
+    hesitate to contact us. We will be happy to discuss your
+    logging-related questions.</p>
     
     <table>
       <tr>

Modified: logback/trunk/logback-site/src/site/resources/logback.ppt
==============================================================================
Binary files. No diff available.


More information about the logback-dev mailing list