[logback-dev] svn commit: r2170 - in logback/trunk: logback-access/src/main/java/ch/qos/logback/access/tomcat logback-classic/src/main/java/ch/qos/logback/classic logback-classic/src/main/java/ch/qos/logback/classic/boolex logback-classic/src/main/java/ch/qos/logback/classic/db logback-classic/src/main/java/ch/qos/logback/classic/filter logback-classic/src/main/java/ch/qos/logback/classic/html logback-classic/src/main/java/ch/qos/logback/classic/log4j logback-classic/src/main/java/ch/qos/logback/classic/net logback-classic/src/main/java/ch/qos/logback/classic/pattern logback-classic/src/main/java/ch/qos/logback/classic/sift logback-classic/src/main/java/ch/qos/logback/classic/spi logback-classic/src/main/java/ch/qos/logback/classic/util logback-classic/src/test/java/ch/qos/logback/classic logback-classic/src/test/java/ch/qos/logback/classic/boolex logback-classic/src/test/java/ch/qos/logback/classic/db logback-classic/src/test/java/ch/qos/logback/classic/html logback-classic/src/t est/java/ch/qos/logback/classic/joran logback-classic/src/test/java/ch/qos/logback/classic/multiJVM logback-classic/src/test/java/ch/qos/logback/classic/net logback-classic/src/test/java/ch/qos/logback/classic/pattern logback-classic/src/test/java/ch/qos/logback/classic/sift logback-classic/src/test/java/ch/qos/logback/classic/spi logback-classic/src/test/java/ch/qos/logback/classic/testUtil logback-classic/src/test/java/ch/qos/logback/classic/util logback-classic/src/test/java/org/dummy logback-classic/src/test/java/org/slf4j/impl logback-core logback-core/src/main/java/ch/qos/logback/core logback-core/src/main/java/ch/qos/logback/core/net logback-core/src/main/java/ch/qos/logback/core/spi logback-examples/src/main/java/chapter11 logback-examples/src/main/java/chapter4 logback-examples/src/main/java/chapter5 logback-examples/src/main/java/chapter6 logback-examples/src/main/java/chapter7 logback-site/src/site/pages

noreply.ceki at qos.ch noreply.ceki at qos.ch
Wed Feb 25 19:15:06 CET 2009


Author: ceki
Date: Wed Feb 25 19:15:06 2009
New Revision: 2170

Added:
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java
      - copied, changed from r2131, /logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventSDO.java
   logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/SDOAware.java
Modified:
   logback/trunk/logback-access/src/main/java/ch/qos/logback/access/tomcat/LogbackValve.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.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/db/DBAppender.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/DBHelper.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultThrowableRenderer.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/log4j/XMLLayout.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueSink.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicSink.java
   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/SocketAppender.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketNode.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/CallerDataConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassicConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ContextNameConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/DateConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/FileOfCallerConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LevelConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineOfCallerConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineSeparatorConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LoggerConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MDCConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MarkerConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MessageConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NamedConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RelativeTimeConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/SyslogStartConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThreadConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextRemoteView.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerRemoteView.java
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/util/LevelToSyslogSeverity.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerPerfTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java
   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/JoranConfiguratorTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/FileAppenderPerf.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeFileAppender.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeRollingFileAppender.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/DilutedSMTPAppenderTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.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/SMTPAppender_GreenTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketAppenderTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ConverterTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverterTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MDCConverterTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MarkerConverterTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ThrowableProxyConverterTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/testUtil/SampleConverter.java
   logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/util/LevelToSyslogSeverityTest.java
   logback/trunk/logback-classic/src/test/java/org/dummy/DummyLBAppender.java
   logback/trunk/logback-classic/src/test/java/org/dummy/Log4jInvocation.java
   logback/trunk/logback-classic/src/test/java/org/slf4j/impl/RecursiveLBAppender.java
   logback/trunk/logback-core/pom.xml
   logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Context.java
   logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java
   logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java
   logback/trunk/logback-examples/src/main/java/chapter11/TrivialLogbackAppender.java
   logback/trunk/logback-examples/src/main/java/chapter11/TrivialLogbackLayout.java
   logback/trunk/logback-examples/src/main/java/chapter4/CountingConsoleAppender.java
   logback/trunk/logback-examples/src/main/java/chapter4/ExitWoes1.java
   logback/trunk/logback-examples/src/main/java/chapter4/ExitWoes2.java
   logback/trunk/logback-examples/src/main/java/chapter4/IO.java
   logback/trunk/logback-examples/src/main/java/chapter5/MySampleConverter.java
   logback/trunk/logback-examples/src/main/java/chapter5/MySampleLayout.java
   logback/trunk/logback-examples/src/main/java/chapter5/MySampleLayout2.java
   logback/trunk/logback-examples/src/main/java/chapter5/PatternSample.java
   logback/trunk/logback-examples/src/main/java/chapter6/SampleFilter.java
   logback/trunk/logback-examples/src/main/java/chapter7/SimpleMDC.java
   logback/trunk/logback-site/src/site/pages/news.html

Log:

This fairly extensive commit in terms of the number of affected
classes but relatively small conceptually. It is a refactoring of the
LoggingEvent class. The LoggingEvent class now implements the
ILoggingEvent interface which essentially contains getter methods with
no setters.  LoggingEvent is no longer serializable because the
relavant serialization code has been moved into LoggingEventSDO. A
LoggingEvent object now requires transformation into LoggingEventSDO
object before serializaiton. LoggingEventSDO class implements the
ILoggingEvent interface. SDO stands for Serialable Data Object.

All logback-classic components, including appenders, layouts,
converters now operate on ILoggingEvent instances. In other words,
logback-classic module is now a specialized processing chain for
ILoggingEvent objects, instead of LoggerEvent objects previously.

The getStartTime method which was previously part of LoggingEvent has
migrated to the Context interface. This change is a nice fit from a
conceptual point of view.

All tests pass. Performance is has not been degraded. 

In the future commits, the LoggerRemoteView may be renamed as
LoggerSDO, and similarly, LoggerContextRemoteView as LoggerContextSDO.


Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/tomcat/LogbackValve.java
==============================================================================
--- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/tomcat/LogbackValve.java	(original)
+++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/tomcat/LogbackValve.java	Wed Feb 25 19:15:06 2009
@@ -52,7 +52,10 @@
 
   public final static String DEFAULT_CONFIG_FILE = "conf" + File.separatorChar
       + "logback-access.xml";
+  
+  private long birthTime = System.currentTimeMillis();
 
+  
   // Attributes from ContextBase:
   private String name;
   StatusManager sm = new BasicStatusManager();
@@ -249,6 +252,10 @@
     this.name = name;
   }
 
+  public long getBithTime() {
+    return birthTime;
+  }
+  
   // ====== Methods from catalina Lifecycle =====
 
   public void addLifecycleListener(LifecycleListener arg0) {
@@ -263,4 +270,6 @@
     // dummy NOP implementation
   }
 
+
+
 }

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java	Wed Feb 25 19:15:06 2009
@@ -12,7 +12,7 @@
 
 import org.slf4j.LoggerFactory;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.ConsoleAppender;
 import ch.qos.logback.core.status.InfoStatus;
 import ch.qos.logback.core.status.StatusManager;
@@ -37,7 +37,7 @@
     if(sm != null)  {
      sm.add(new InfoStatus("Setting up default configuration.", lc));
     }
-    ConsoleAppender<LoggingEvent> ca = new ConsoleAppender<LoggingEvent>();
+    ConsoleAppender<ILoggingEvent> ca = new ConsoleAppender<ILoggingEvent>();
     ca.setContext(lc);
     ca.setName("console");
     PatternLayout pl = new PatternLayout();

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java	Wed Feb 25 19:15:06 2009
@@ -22,6 +22,7 @@
 import org.slf4j.spi.LocationAwareLogger;
 
 import ch.qos.logback.classic.spi.LoggerRemoteView;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.spi.AppenderAttachable;
@@ -29,7 +30,7 @@
 import ch.qos.logback.core.spi.FilterReply;
 
 public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
-    AppenderAttachable<LoggingEvent>, Serializable {
+    AppenderAttachable<ILoggingEvent>, Serializable {
 
   /**
    * 
@@ -82,7 +83,7 @@
    * only within addAppender which is synchronized <p> 3) all the other methods
    * check whether 'aai' is null <p> 4) AppenderAttachableImpl is thread safe
    */
-  private transient AppenderAttachableImpl<LoggingEvent> aai;
+  private transient AppenderAttachableImpl<ILoggingEvent> aai;
   /**
    * Additivity is set to true by default, that is children inherit the
    * appenders of their ancestors by default. If this variable is set to
@@ -216,9 +217,9 @@
 
   // this method MUST be synchronized. See comments on 'aai' field for further
   // details.
-  public synchronized void addAppender(Appender<LoggingEvent> newAppender) {
+  public synchronized void addAppender(Appender<ILoggingEvent> newAppender) {
     if (aai == null) {
-      aai = new AppenderAttachableImpl<LoggingEvent>();
+      aai = new AppenderAttachableImpl<ILoggingEvent>();
     }
     aai.addAppender(newAppender);
   }
@@ -231,14 +232,14 @@
   }
 
   @SuppressWarnings("unchecked")
-  public Iterator<Appender<LoggingEvent>> iteratorForAppenders() {
+  public Iterator<Appender<ILoggingEvent>> iteratorForAppenders() {
     if (aai == null) {
       return Collections.EMPTY_LIST.iterator();
     }
     return aai.iteratorForAppenders();
   }
 
-  public Appender<LoggingEvent> getAppender(String name) {
+  public Appender<ILoggingEvent> getAppender(String name) {
     if (aai == null) {
       return null;
     }
@@ -251,7 +252,7 @@
    * @param event
    *                The event to log
    */
-  public void callAppenders(LoggingEvent event) {
+  public void callAppenders(ILoggingEvent event) {
     int writes = 0;
     for (Logger l = this; l != null; l = l.parent) {
       writes += l.appendLoopOnAppenders(event);
@@ -265,7 +266,7 @@
     }
   }
 
-  private int appendLoopOnAppenders(LoggingEvent event) {
+  private int appendLoopOnAppenders(ILoggingEvent event) {
     if (aai != null) {
       return aai.appendLoopOnAppenders(event);
     } else {

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java	Wed Feb 25 19:15:06 2009
@@ -32,14 +32,14 @@
 import ch.qos.logback.classic.pattern.RelativeTimeConverter;
 import ch.qos.logback.classic.pattern.ThreadConverter;
 import ch.qos.logback.classic.pattern.ThrowableProxyConverter;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.pattern.PatternLayoutBase;
 
 /**
  * <p>
  * A flexible layout configurable with pattern string. The goal of this class is
- * to {@link #format format} a {@link LoggingEvent} and return the results in a
+ * to {@link #format format} a {@link ILoggingEvent} and return the results in a
  * {#link String}. The format of the result depends on the
  * <em>conversion pattern</em>.
  * <p>
@@ -48,7 +48,7 @@
  * 
  */
 
-public class PatternLayout extends PatternLayoutBase<LoggingEvent> {
+public class PatternLayout extends PatternLayoutBase<ILoggingEvent> {
 
   public static final Map<String, String> defaultConverterMap = new HashMap<String, String>();
 
@@ -125,7 +125,7 @@
     return defaultConverterMap;
   }
 
-  public String doLayout(LoggingEvent event) {
+  public String doLayout(ILoggingEvent event) {
     if (!isStarted()) {
       return CoreConstants.EMPTY_STRING;
     }

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java	Wed Feb 25 19:15:06 2009
@@ -17,14 +17,14 @@
 
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.spi.LoggerRemoteView;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.boolex.JaninoEventEvaluatorBase;
 import ch.qos.logback.core.boolex.Matcher;
 
 
 
-public class JaninoEventEvaluator extends JaninoEventEvaluatorBase<LoggingEvent> {
+public class JaninoEventEvaluator extends JaninoEventEvaluatorBase<ILoggingEvent> {
 
   
   public final static String IMPORT_LEVEL = "import ch.qos.logback.classic.Level;\r\n";
@@ -53,7 +53,7 @@
     DEFAULT_PARAM_TYPE_LIST.add(int.class);
     DEFAULT_PARAM_TYPE_LIST.add(int.class);
     
-    DEFAULT_PARAM_TYPE_LIST.add(LoggingEvent.class);
+    DEFAULT_PARAM_TYPE_LIST.add(ILoggingEvent.class);
     DEFAULT_PARAM_TYPE_LIST.add(String.class);
     DEFAULT_PARAM_TYPE_LIST.add(LoggerRemoteView.class);
     DEFAULT_PARAM_TYPE_LIST.add(int.class);
@@ -92,7 +92,7 @@
     return (Class[]) fullTypeList.toArray(CoreConstants.EMPTY_CLASS_ARRAY);
   }
 
-  protected Object[] getParameterValues(LoggingEvent loggingEvent) {
+  protected Object[] getParameterValues(ILoggingEvent loggingEvent) {
     final int matcherListSize = matcherList.size();
     
     int i = 0;

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	Wed Feb 25 19:15:06 2009
@@ -10,7 +10,7 @@
 package ch.qos.logback.classic.boolex;
 
 import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.boolex.EvaluationException;
 import ch.qos.logback.core.boolex.EventEvaluatorBase;
 
@@ -21,13 +21,13 @@
  * @author Ceki G&uuml;lc&uuml;
  * 
  */
-public class OnErrorEvaluator extends EventEvaluatorBase<LoggingEvent> {
+public class OnErrorEvaluator extends EventEvaluatorBase<ILoggingEvent> {
 
   /**
    * Return true if event passed as parameter has level ERROR or higher, returns
    * false otherwise.
    */
-  public boolean evaluate(LoggingEvent event) throws NullPointerException,
+  public boolean evaluate(ILoggingEvent event) throws NullPointerException,
       EvaluationException {
     return event.getLevel().levelInt >= Level.ERROR_INT;
   }

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/DBAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/DBAppender.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/DBAppender.java	Wed Feb 25 19:15:06 2009
@@ -20,7 +20,7 @@
 import java.util.Set;
 
 import ch.qos.logback.classic.spi.CallerData;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.ThrowableDataPoint;
 import ch.qos.logback.core.db.DBAppenderBase;
 
@@ -35,7 +35,7 @@
  * @author Ray DeCampo
  * @author S&eacute;bastien Pennec
  */
-public class DBAppender extends DBAppenderBase<LoggingEvent> {
+public class DBAppender extends DBAppenderBase<ILoggingEvent> {
   protected final String insertPropertiesSQL = "INSERT INTO  logging_event_property (event_id, mapped_key, mapped_value) VALUES (?, ?, ?)";
   protected final String insertExceptionSQL = "INSERT INTO  logging_event_exception (event_id, i, trace_line) VALUES (?, ?, ?)";
   protected static final String insertSQL;
@@ -75,7 +75,7 @@
   @Override
   protected void subAppend(Object eventObject, Connection connection,
       PreparedStatement insertStatement) throws Throwable {
-    LoggingEvent event = (LoggingEvent) eventObject;
+    ILoggingEvent event = (ILoggingEvent) eventObject;
 
     bindLoggingEventWithInsertStatement(insertStatement, event);
     // This is expensive... should we do it every time?
@@ -96,7 +96,7 @@
     }
   }
 
-  void bindLoggingEventWithInsertStatement(PreparedStatement stmt, LoggingEvent event)
+  void bindLoggingEventWithInsertStatement(PreparedStatement stmt, ILoggingEvent event)
       throws SQLException {
     stmt.setLong(1, event.getTimeStamp());
     stmt.setString(2, event.getFormattedMessage());
@@ -117,7 +117,7 @@
     }
   }
 
-  Map<String, String> mergePropertyMaps(LoggingEvent event) {
+  Map<String, String> mergePropertyMaps(ILoggingEvent event) {
     Map<String, String> mergedMap = new HashMap<String, String>();
     // we add the context properties first, then the event properties, since
     // we consider that event-specific properties should have priority over

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/DBHelper.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/DBHelper.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/db/DBHelper.java	Wed Feb 25 19:15:06 2009
@@ -10,7 +10,7 @@
 
 package ch.qos.logback.classic.db;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.ThrowableDataPoint;
 
 /**
@@ -22,7 +22,7 @@
   public static short PROPERTIES_EXIST = 0x01;
   public static short EXCEPTION_EXISTS = 0x02;
 
-  public static short computeReferenceMask(LoggingEvent event) {
+  public static short computeReferenceMask(ILoggingEvent event) {
     short mask = 0;
 
     int mdcPropSize = 0;

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java	Wed Feb 25 19:15:06 2009
@@ -1,7 +1,7 @@
 package ch.qos.logback.classic.filter;
 
 import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.filter.AbstractMatcherFilter;
 import ch.qos.logback.core.spi.FilterReply;
 
@@ -27,7 +27,7 @@
       return FilterReply.NEUTRAL;
     }
     
-    LoggingEvent event = (LoggingEvent)eventObject;
+    ILoggingEvent event = (ILoggingEvent)eventObject;
     
     if (event.getLevel().equals(level)) {
       return onMatch;

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java	Wed Feb 25 19:15:06 2009
@@ -1,7 +1,7 @@
 package ch.qos.logback.classic.filter;
 
 import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.filter.Filter;
 import ch.qos.logback.core.spi.FilterReply;
 
@@ -29,7 +29,7 @@
       return FilterReply.NEUTRAL;
     }
     
-    LoggingEvent event = (LoggingEvent)eventObject;
+    ILoggingEvent event = (ILoggingEvent)eventObject;
     
     if (event.getLevel().isGreaterOrEqual(level)) {
       return FilterReply.NEUTRAL;

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultThrowableRenderer.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultThrowableRenderer.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultThrowableRenderer.java	Wed Feb 25 19:15:06 2009
@@ -10,7 +10,7 @@
 package ch.qos.logback.classic.html;
 
 import static ch.qos.logback.core.CoreConstants.LINE_SEPARATOR;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.ThrowableDataPoint;
 import ch.qos.logback.classic.spi.ThrowableProxy;
 import ch.qos.logback.core.helpers.Transform;
@@ -49,7 +49,7 @@
   }
   
   public void render(StringBuilder sbuf, Object eventObject) {
-    LoggingEvent event = (LoggingEvent)eventObject;
+    ILoggingEvent event = (ILoggingEvent)eventObject;
     ThrowableProxy tp = event.getThrowableProxy();
     if (tp != null) {
       render(sbuf, tp.getThrowableDataPointArray());

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java	Wed Feb 25 19:15:06 2009
@@ -13,7 +13,7 @@
 import java.util.Map;
 
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.html.DefaultCssBuilder;
 import ch.qos.logback.core.html.HTMLLayoutBase;
 import ch.qos.logback.core.html.IThrowableRenderer;
@@ -32,7 +32,7 @@
  * @author Ceki G&uuml;lc&uuml;
  * @author S&eacute;bastien Pennec
  */
-public class HTMLLayout extends HTMLLayoutBase<LoggingEvent> {
+public class HTMLLayout extends HTMLLayoutBase<ILoggingEvent> {
 
   /**
    * Default pattern string for log output.
@@ -68,7 +68,7 @@
     return PatternLayout.defaultConverterMap;
   }
 
-  public String doLayout(LoggingEvent event) {
+  public String doLayout(ILoggingEvent event) {
     StringBuilder buf = new StringBuilder();
     startNewTableIfLimitReached(buf);
 
@@ -89,7 +89,7 @@
     }
     buf.append(LINE_SEPARATOR);
 
-    Converter<LoggingEvent> c = head;
+    Converter<ILoggingEvent> c = head;
     while (c != null) {
       appendEventToBuffer(buf, c, event);
       c = c.getNext();
@@ -104,7 +104,7 @@
   }
 
   private void appendEventToBuffer(StringBuilder buf,
-      Converter<LoggingEvent> c, LoggingEvent event) {
+      Converter<ILoggingEvent> c, ILoggingEvent event) {
     buf.append("<td class=\"");
     buf.append(computeConverterName(c));
     buf.append("\">");

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/log4j/XMLLayout.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/log4j/XMLLayout.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/log4j/XMLLayout.java	Wed Feb 25 19:15:06 2009
@@ -14,7 +14,7 @@
 import java.util.Map.Entry;
 
 import ch.qos.logback.classic.spi.CallerData;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.ThrowableDataPoint;
 import ch.qos.logback.classic.spi.ThrowableProxy;
 import ch.qos.logback.core.LayoutBase;
@@ -31,7 +31,7 @@
  * 
  * @author Ceki G&uuml;lc&uuml;
  */
-public class XMLLayout extends LayoutBase<LoggingEvent> {
+public class XMLLayout extends LayoutBase<ILoggingEvent> {
 
   private final int DEFAULT_SIZE = 256;
   private final int UPPER_LIMIT = 2048;
@@ -88,9 +88,9 @@
   }
 
   /**
-   * Formats a {@link LoggingEvent} in conformity with the log4j.dtd.
+   * Formats a {@link ILoggingEvent} in conformity with the log4j.dtd.
    */
-  public String doLayout(LoggingEvent event) {
+  public String doLayout(ILoggingEvent event) {
 
     // Reset working buffer. If the buffer is too large, then we need a new
     // one in order to avoid the penalty of creating a large array.

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java	Wed Feb 25 19:15:06 2009
@@ -19,7 +19,7 @@
 import javax.jms.Session;
 import javax.naming.Context;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.AppenderBase;
 import ch.qos.logback.core.net.JMSAppenderBase;
 
@@ -33,7 +33,7 @@
  * 
  * @author Ceki G&uuml;lc&uuml;
  */
-public class JMSQueueAppender extends JMSAppenderBase<LoggingEvent> {
+public class JMSQueueAppender extends JMSAppenderBase<ILoggingEvent> {
 
   static int SUCCESSIVE_FAILURE_LIMIT = 3;
 
@@ -159,14 +159,14 @@
    * This method called by {@link AppenderBase#doAppend} method to do most
    * of the real appending work.
    */
-  public void append(LoggingEvent event) {
+  public void append(ILoggingEvent event) {
     if (!isStarted()) {
       return;
     }
 
     try {
       ObjectMessage msg = queueSession.createObjectMessage();
-      msg.setObject(event);
+      msg.setObject(event.getSDO());
       queueSender.send(msg);
       successiveFailureCount = 0;
     } catch (Exception e) {

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueSink.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueSink.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueSink.java	Wed Feb 25 19:15:06 2009
@@ -31,7 +31,7 @@
 
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.util.ContextInitializer;
 
 /**
@@ -112,11 +112,11 @@
   }
 
   public void onMessage(javax.jms.Message message) {
-    LoggingEvent event;
+    ILoggingEvent event;
     try {
       if (message instanceof ObjectMessage) {
         ObjectMessage objectMessage = (ObjectMessage) message;
-        event = (LoggingEvent) objectMessage.getObject();
+        event = (ILoggingEvent) objectMessage.getObject();
         Logger log = (Logger) LoggerFactory.getLogger(event.getLoggerRemoteView().getName());
         log.callAppenders(event);
       } else {

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java	Wed Feb 25 19:15:06 2009
@@ -19,7 +19,7 @@
 import javax.jms.TopicSession;
 import javax.naming.Context;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.AppenderBase;
 import ch.qos.logback.core.net.JMSAppenderBase;
 
@@ -33,7 +33,7 @@
  * 
  * @author Ceki G&uuml;lc&uuml;
  */
-public class JMSTopicAppender extends JMSAppenderBase<LoggingEvent> {
+public class JMSTopicAppender extends JMSAppenderBase<ILoggingEvent> {
 
   static int SUCCESSIVE_FAILURE_LIMIT = 3;
 
@@ -160,7 +160,7 @@
    * This method called by {@link AppenderBase#doAppend} method to do most
    * of the real appending work.
    */
-  public void append(LoggingEvent event) {
+  public void append(ILoggingEvent event) {
     if (!isStarted()) {
       return;
     }
@@ -168,7 +168,7 @@
     try {
       ObjectMessage msg = topicSession.createObjectMessage();
 
-      msg.setObject(event);
+      msg.setObject(event.getSDO());
       topicPublisher.publish(msg);
       successiveFailureCount = 0;
     } catch (Exception e) {

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicSink.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicSink.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicSink.java	Wed Feb 25 19:15:06 2009
@@ -31,7 +31,7 @@
 
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.util.ContextInitializer;
 
 /**
@@ -112,11 +112,11 @@
   }
 
   public void onMessage(javax.jms.Message message) {
-    LoggingEvent event;
+    ILoggingEvent event;
     try {
       if (message instanceof ObjectMessage) {
         ObjectMessage objectMessage = (ObjectMessage) message;
-        event = (LoggingEvent) objectMessage.getObject();
+        event = (ILoggingEvent) objectMessage.getObject();
         Logger log = (Logger) LoggerFactory.getLogger(event.getLoggerRemoteView().getName());
         log.callAppenders(event);
       } else {

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	Wed Feb 25 19:15:06 2009
@@ -12,7 +12,7 @@
 
 import ch.qos.logback.classic.PatternLayout;
 import ch.qos.logback.classic.boolex.OnErrorEvaluator;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.Layout;
 import ch.qos.logback.core.boolex.EventEvaluator;
 import ch.qos.logback.core.helpers.CyclicBuffer;
@@ -29,13 +29,13 @@
  * @author S&eacute;bastien Pennec
  * 
  */
-public class SMTPAppender extends SMTPAppenderBase<LoggingEvent> {
+public class SMTPAppender extends SMTPAppenderBase<ILoggingEvent> {
 
   // value "%logger{20} - %m" is referenced in the docs!
   static final String DEFAULT_SUBJECT_PATTERN = "%logger{20} - %m";
   
   private int bufferSize = 512;
-  protected CyclicBuffer<LoggingEvent> cb = new CyclicBuffer<LoggingEvent>(bufferSize);
+  protected CyclicBuffer<ILoggingEvent> cb = new CyclicBuffer<ILoggingEvent>(bufferSize);
 
   /**
    * The default constructor will instantiate the appender with a
@@ -61,7 +61,7 @@
    * Use the parameter as the {@link
    * EventEvaluator} for this SMTPAppender.
    */
-  public SMTPAppender(EventEvaluator<LoggingEvent> eventEvaluator) {
+  public SMTPAppender(EventEvaluator<ILoggingEvent> eventEvaluator) {
     this.eventEvaluator = eventEvaluator;
   }
 
@@ -69,7 +69,7 @@
    * Perform SMTPAppender specific appending actions, mainly adding the event to
    * a cyclic buffer.
    */
-  protected void subAppend(LoggingEvent event) {
+  protected void subAppend(ILoggingEvent event) {
     event.prepareForDeferredProcessing();
     cb.add(event);
     // addInfo("Added event to the cyclic buffer: " + event.getMessage());
@@ -80,7 +80,7 @@
     int len = cb.length();
     for (int i = 0; i < len; i++) {
       // sbuf.append(MimeUtility.encodeText(layout.format(cb.get())));
-      LoggingEvent event = cb.get();
+      ILoggingEvent event = cb.get();
       sbuf.append(layout.doLayout(event));
     }
   }
@@ -105,7 +105,7 @@
   }
 
   @Override
-  protected Layout<LoggingEvent> makeSubjectLayout(String subjectStr) {
+  protected Layout<ILoggingEvent> makeSubjectLayout(String subjectStr) {
     if(subjectStr == null) {
       subjectStr = DEFAULT_SUBJECT_PATTERN;
     }

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java	Wed Feb 25 19:15:06 2009
@@ -13,11 +13,11 @@
 
 import java.net.InetAddress;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.net.SocketAppenderBase;
 
 /**
- * Sends {@link LoggingEvent} objects to a remote a log server, usually a
+ * Sends {@link ILoggingEvent} objects to a remote a log server, usually a
  * {@link SocketNode}.
  * 
  * For more information on this appender, please refer to the online manual
@@ -27,7 +27,7 @@
  * @author S&eacute;bastien Pennec
  */
 
-public class SocketAppender extends SocketAppenderBase<LoggingEvent> {
+public class SocketAppender extends SocketAppenderBase<ILoggingEvent> {
 
   boolean includeCallerData = false;
 
@@ -53,7 +53,7 @@
   }
 
   @Override
-  protected void postProcessEvent(LoggingEvent event) {
+  protected void postProcessEvent(ILoggingEvent event) {
     if (includeCallerData) {
       event.getCallerData();
     }

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketNode.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketNode.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketNode.java	Wed Feb 25 19:15:06 2009
@@ -20,12 +20,12 @@
 import org.slf4j.LoggerFactory;
 
 import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 // Contributors: Moses Hohman <mmhohman at rainbow.uchicago.edu>
 
 /**
- * Read {@link LoggingEvent} objects sent from a remote client using Sockets
+ * Read {@link ILoggingEvent} objects sent from a remote client using Sockets
  * (TCP). These logging events are logged according to local policy, as if they
  * were generated locally.
  * 
@@ -69,13 +69,13 @@
   // }
 
   public void run() {
-    LoggingEvent event;
+    ILoggingEvent event;
     Logger remoteLogger;
 
     try {
       while (!closed) {
         // read an event from the wire
-        event = (LoggingEvent) ois.readObject();
+        event = (ILoggingEvent) ois.readObject();
         // get a logger from the hierarchy. The name of the logger is taken to
         // be the name contained in the event.
         remoteLogger = context.getLogger(event.getLoggerRemoteView().getName());

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java	Wed Feb 25 19:15:06 2009
@@ -13,7 +13,7 @@
 
 import ch.qos.logback.classic.PatternLayout;
 import ch.qos.logback.classic.pattern.SyslogStartConverter;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.ThrowableDataPoint;
 import ch.qos.logback.classic.util.LevelToSyslogSeverity;
 import ch.qos.logback.core.Layout;
@@ -29,13 +29,13 @@
  * 
  * @author Ceki G&uumllc&uuml;
  */
-public class SyslogAppender extends SyslogAppenderBase<LoggingEvent> {
+public class SyslogAppender extends SyslogAppenderBase<ILoggingEvent> {
 
   static final public String DEFAULT_SUFFIX_PATTERN = "[%thread] %logger %msg";
 
   PatternLayout prefixLayout = new PatternLayout();
 
-  public Layout<LoggingEvent> buildLayout(String facilityStr) {
+  public Layout<ILoggingEvent> buildLayout(String facilityStr) {
     String prefixPattern = "%syslogStart{" + facilityStr + "}%nopex";
   
     prefixLayout.getInstanceConverterMap().put("syslogStart",
@@ -66,13 +66,13 @@
    */
   @Override
   public int getSeverityForEvent(Object eventObject) {
-    LoggingEvent event = (LoggingEvent) eventObject;
+    ILoggingEvent event = (ILoggingEvent) eventObject;
     return LevelToSyslogSeverity.convert(event);
   }
 
   @Override
   protected void postProcess(Object eventObject, SyslogWriter sw) {
-    LoggingEvent event = (LoggingEvent) eventObject;
+    ILoggingEvent event = (ILoggingEvent) eventObject;
     
     String prefix = prefixLayout.doLayout(event);
     

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/CallerDataConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/CallerDataConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/CallerDataConverter.java	Wed Feb 25 19:15:06 2009
@@ -14,7 +14,7 @@
 import java.util.Map;
 
 import ch.qos.logback.classic.spi.CallerData;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.boolex.EvaluationException;
@@ -29,7 +29,7 @@
 public class CallerDataConverter extends ClassicConverter {
 
   int depth = 5;
-  List<EventEvaluator<LoggingEvent>> evaluatorList = null;
+  List<EventEvaluator<ILoggingEvent>> evaluatorList = null;
 
   final int MAX_ERROR_COUNT = 4;
   int errorCount = 0;
@@ -57,7 +57,7 @@
         if (context != null) {
           Map evaluatorMap = (Map) context
               .getObject(CoreConstants.EVALUATOR_MAP);
-          EventEvaluator<LoggingEvent> ee = (EventEvaluator<LoggingEvent>) evaluatorMap
+          EventEvaluator<ILoggingEvent> ee = (EventEvaluator<ILoggingEvent>) evaluatorMap
               .get(evaluatorStr);
           if (ee != null) {
             addEvaluator(ee);
@@ -68,20 +68,20 @@
 
   }
 
-  private void addEvaluator(EventEvaluator<LoggingEvent> ee) {
+  private void addEvaluator(EventEvaluator<ILoggingEvent> ee) {
     if (evaluatorList == null) {
-      evaluatorList = new ArrayList<EventEvaluator<LoggingEvent>>();
+      evaluatorList = new ArrayList<EventEvaluator<ILoggingEvent>>();
     }
     evaluatorList.add(ee);
   }
 
-  public String convert(LoggingEvent le) {
+  public String convert(ILoggingEvent le) {
     StringBuffer buf = new StringBuffer();
 
     if (evaluatorList != null) {
       boolean printCallerData = false;
       for (int i = 0; i < evaluatorList.size(); i++) {
-        EventEvaluator<LoggingEvent> ee = evaluatorList.get(i);
+        EventEvaluator<ILoggingEvent> ee = evaluatorList.get(i);
         try {
           if (ee.evaluate(le)) {
             printCallerData = true;

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java	Wed Feb 25 19:15:06 2009
@@ -10,11 +10,11 @@
 package ch.qos.logback.classic.pattern;
 
 import ch.qos.logback.classic.spi.CallerData;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class ClassOfCallerConverter extends NamedConverter {
 
-  protected String getFullyQualifiedName(LoggingEvent event) {
+  protected String getFullyQualifiedName(ILoggingEvent event) {
     
     CallerData[] cda = event.getCallerData();
     if (cda != null && cda.length > 0) {

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassicConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassicConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassicConverter.java	Wed Feb 25 19:15:06 2009
@@ -12,7 +12,7 @@
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.spi.LoggerContextAware;
 import ch.qos.logback.classic.spi.LoggerContextAwareBase;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.pattern.DynamicConverter;
 import ch.qos.logback.core.status.Status;
@@ -24,7 +24,7 @@
  * 
  * @author Ceki Gulcu
  */
-abstract public class ClassicConverter extends DynamicConverter<LoggingEvent> implements
+abstract public class ClassicConverter extends DynamicConverter<ILoggingEvent> implements
     LoggerContextAware {
 
   LoggerContextAwareBase lcab = new LoggerContextAwareBase();

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ContextNameConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ContextNameConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ContextNameConverter.java	Wed Feb 25 19:15:06 2009
@@ -9,7 +9,7 @@
  */
 package ch.qos.logback.classic.pattern;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 /**
  * Converts an event to the logger context's name.
@@ -21,7 +21,7 @@
   /**
    * Return the name of the logger context's name.
    */
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     return getContext().getName();
   }
 

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/DateConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/DateConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/DateConverter.java	Wed Feb 25 19:15:06 2009
@@ -14,7 +14,7 @@
 import java.util.List;
 import java.util.TimeZone;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 
 
@@ -53,7 +53,7 @@
     }
   }
   
-  public String convert(LoggingEvent le) {
+  public String convert(ILoggingEvent le) {
     long timestamp = le.getTimeStamp();
     
     // if called multiple times within the same millisecond

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java	Wed Feb 25 19:15:06 2009
@@ -1,12 +1,12 @@
 package ch.qos.logback.classic.pattern;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.pattern.Converter;
 import ch.qos.logback.core.pattern.ConverterUtil;
 import ch.qos.logback.core.pattern.PostCompileProcessor;
 
 public class EnsureExceptionHandling implements
-    PostCompileProcessor<LoggingEvent> {
+    PostCompileProcessor<ILoggingEvent> {
 
   /**
    * This implementation checks if any of the converters in the chain handles
@@ -23,10 +23,10 @@
    * 
    * 
    */
-  public void process(Converter<LoggingEvent> head) {
+  public void process(Converter<ILoggingEvent> head) {
     if (!chainHandlesThrowable(head)) {
-      Converter<LoggingEvent> tail = ConverterUtil.findTail(head);
-      Converter<LoggingEvent> exConverter = new ExtendedThrowableProxyConverter();
+      Converter<ILoggingEvent> tail = ConverterUtil.findTail(head);
+      Converter<ILoggingEvent> exConverter = new ExtendedThrowableProxyConverter();
       if (tail == null) {
         head = exConverter;
       } else {

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java	Wed Feb 25 19:15:06 2009
@@ -10,7 +10,7 @@
 package ch.qos.logback.classic.pattern;
 
 import ch.qos.logback.classic.spi.ClassPackagingData;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.StackTraceElementProxy;
 import ch.qos.logback.classic.spi.ThrowableDataPoint;
 import ch.qos.logback.classic.spi.ThrowableProxy;
@@ -30,7 +30,7 @@
     }
   }
 
-  protected void prepareLoggingEvent(LoggingEvent event) {
+  protected void prepareLoggingEvent(ILoggingEvent event) {
     ThrowableProxy tp = event.getThrowableProxy();
     tp.calculatePackagingData();
   }

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/FileOfCallerConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/FileOfCallerConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/FileOfCallerConverter.java	Wed Feb 25 19:15:06 2009
@@ -10,11 +10,11 @@
 package ch.qos.logback.classic.pattern;
 
 import ch.qos.logback.classic.spi.CallerData;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class FileOfCallerConverter extends ClassicConverter {
 
-  public String convert(LoggingEvent le) {
+  public String convert(ILoggingEvent le) {
     CallerData[] cda = le.getCallerData();
     if (cda != null && cda.length > 0) {
       return cda[0].getFileName();

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LevelConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LevelConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LevelConverter.java	Wed Feb 25 19:15:06 2009
@@ -1,6 +1,6 @@
 package ch.qos.logback.classic.pattern;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 /**
  * Return the event's level.
@@ -9,7 +9,7 @@
  */
 public class LevelConverter extends ClassicConverter {
 
-  public String convert(LoggingEvent le) {
+  public String convert(ILoggingEvent le) {
     return le.getLevel().toString();
   }
 

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineOfCallerConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineOfCallerConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineOfCallerConverter.java	Wed Feb 25 19:15:06 2009
@@ -10,11 +10,11 @@
 package ch.qos.logback.classic.pattern;
 
 import ch.qos.logback.classic.spi.CallerData;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class LineOfCallerConverter extends ClassicConverter {
 
-  public String convert(LoggingEvent le) {
+  public String convert(ILoggingEvent le) {
     CallerData[] cda = le.getCallerData();
     if (cda != null && cda.length > 0) {
       return Integer.toString(cda[0].getLineNumber());

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineSeparatorConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineSeparatorConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineSeparatorConverter.java	Wed Feb 25 19:15:06 2009
@@ -1,11 +1,11 @@
 package ch.qos.logback.classic.pattern;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 
 public class LineSeparatorConverter extends ClassicConverter {
 
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     return CoreConstants.LINE_SEPARATOR;
   }
 

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LoggerConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LoggerConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LoggerConverter.java	Wed Feb 25 19:15:06 2009
@@ -9,11 +9,11 @@
  */
 package ch.qos.logback.classic.pattern;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class LoggerConverter extends NamedConverter {
 
-  protected String getFullyQualifiedName(LoggingEvent event) {
+  protected String getFullyQualifiedName(ILoggingEvent event) {
     return event.getLoggerRemoteView().getName();
   }
 }

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MDCConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MDCConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MDCConverter.java	Wed Feb 25 19:15:06 2009
@@ -4,7 +4,7 @@
 import java.util.Map;
 import java.util.Set;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class MDCConverter extends ClassicConverter {
 
@@ -27,7 +27,7 @@
   }
 
   @Override
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     Map<String, String> mdcPropertyMap = event.getMDCPropertyMap();
 
     if (mdcPropertyMap == null) {

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MarkerConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MarkerConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MarkerConverter.java	Wed Feb 25 19:15:06 2009
@@ -2,7 +2,7 @@
 
 import org.slf4j.Marker;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 /**
  * Return the event's marker value(s).
@@ -13,7 +13,7 @@
 
   private static String EMPTY = "";
 
-  public String convert(LoggingEvent le) {
+  public String convert(ILoggingEvent le) {
     Marker marker = le.getMarker();
     if (marker == null) {
       return EMPTY;

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MessageConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MessageConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MessageConverter.java	Wed Feb 25 19:15:06 2009
@@ -9,7 +9,7 @@
  */
 package ch.qos.logback.classic.pattern;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 /**
  * Return the event's message.
@@ -18,7 +18,7 @@
  */
 public class MessageConverter extends ClassicConverter {
 
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     return event.getFormattedMessage();
   }
 

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java	Wed Feb 25 19:15:06 2009
@@ -10,11 +10,11 @@
 package ch.qos.logback.classic.pattern;
 
 import ch.qos.logback.classic.spi.CallerData;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class MethodOfCallerConverter extends ClassicConverter {
 
-  public String convert(LoggingEvent le) {
+  public String convert(ILoggingEvent le) {
     CallerData[] cda = le.getCallerData();
     if (cda != null && cda.length > 0) {
       return cda[0].getMethodName();

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NamedConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NamedConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NamedConverter.java	Wed Feb 25 19:15:06 2009
@@ -9,7 +9,7 @@
  */
 package ch.qos.logback.classic.pattern;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public abstract class NamedConverter extends ClassicConverter {
 
@@ -22,7 +22,7 @@
    *          The LoggingEvent to process, cannot not be null.
    * @return name, must not be null.
    */
-  protected abstract String getFullyQualifiedName(final LoggingEvent event);
+  protected abstract String getFullyQualifiedName(final ILoggingEvent event);
 
   public void start() {
     String optStr = getFirstOption();
@@ -40,7 +40,7 @@
     }
   }
 
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     String fqn = getFullyQualifiedName(event);
 
     if (abbreviator == null) {

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java	Wed Feb 25 19:15:06 2009
@@ -1,7 +1,7 @@
 package ch.qos.logback.classic.pattern;
 
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 
 
@@ -23,7 +23,7 @@
  */
 public class NopThrowableInformationConverter extends ThrowableHandlingConverter {
 
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     return CoreConstants.EMPTY_STRING;
   }
  

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RelativeTimeConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RelativeTimeConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RelativeTimeConverter.java	Wed Feb 25 19:15:06 2009
@@ -9,14 +9,14 @@
  */
 package ch.qos.logback.classic.pattern;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class RelativeTimeConverter extends ClassicConverter {
 
   long lastTimestamp = -1;
   String timesmapStr = null;
   
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     long timestamp = event.getTimeStamp();
     
     // if called multiple times within the same millisecond
@@ -25,7 +25,7 @@
       return timesmapStr;
     } else {
       lastTimestamp = timestamp;
-      timesmapStr = Long.toString(timestamp - LoggingEvent.getStartTime());
+      timesmapStr = Long.toString(timestamp - event.getContextBirthTime());
       return timesmapStr;
     }
   }

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/SyslogStartConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/SyslogStartConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/SyslogStartConverter.java	Wed Feb 25 19:15:06 2009
@@ -16,7 +16,7 @@
 import java.util.Date;
 import java.util.Locale;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.util.LevelToSyslogSeverity;
 import ch.qos.logback.core.net.SyslogAppenderBase;
 
@@ -53,7 +53,7 @@
     }
   }
 
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     StringBuilder sb = new StringBuilder();
 
     int pri = facility + LevelToSyslogSeverity.convert(event);

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThreadConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThreadConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThreadConverter.java	Wed Feb 25 19:15:06 2009
@@ -1,6 +1,6 @@
 package ch.qos.logback.classic.pattern;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 /**
  * Return the events thread (usually the current thread).
@@ -9,7 +9,7 @@
  */
 public class ThreadConverter extends ClassicConverter {
 
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     return event.getThreadName();
   }
 

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java	Wed Feb 25 19:15:06 2009
@@ -13,7 +13,7 @@
 import java.util.List;
 import java.util.Map;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.ThrowableDataPoint;
 import ch.qos.logback.classic.spi.ThrowableProxy;
 import ch.qos.logback.core.Context;
@@ -30,7 +30,7 @@
 public class ThrowableProxyConverter extends ThrowableHandlingConverter {
 
   int lengthOption;
-  List<EventEvaluator<LoggingEvent>> evaluatorList = null;
+  List<EventEvaluator<ILoggingEvent>> evaluatorList = null;
 
   final int MAX_ERROR_COUNT = 4;
   int errorCount = 0;
@@ -67,16 +67,16 @@
         String evaluatorStr = (String) optionList.get(i);
         Context context = getContext();
         Map evaluatorMap = (Map) context.getObject(CoreConstants.EVALUATOR_MAP);
-        EventEvaluator<LoggingEvent> ee = (EventEvaluator<LoggingEvent>) evaluatorMap.get(evaluatorStr);
+        EventEvaluator<ILoggingEvent> ee = (EventEvaluator<ILoggingEvent>) evaluatorMap.get(evaluatorStr);
         addEvaluator(ee);
       }
     }
     super.start();
   }
 
-  private void addEvaluator(EventEvaluator<LoggingEvent> ee) {
+  private void addEvaluator(EventEvaluator<ILoggingEvent> ee) {
     if (evaluatorList == null) {
-      evaluatorList = new ArrayList<EventEvaluator<LoggingEvent>>();
+      evaluatorList = new ArrayList<EventEvaluator<ILoggingEvent>>();
     }
     evaluatorList.add(ee);
   }
@@ -90,11 +90,11 @@
     // nop
   }
   
-  protected void prepareLoggingEvent(LoggingEvent event) {
+  protected void prepareLoggingEvent(ILoggingEvent event) {
     // nop  
   }
   
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     StringBuilder buf = new StringBuilder(32);
 
     ThrowableProxy information = event.getThrowableProxy();
@@ -112,7 +112,7 @@
     if (evaluatorList != null) {
       boolean printStack = true;
       for (int i = 0; i < evaluatorList.size(); i++) {
-        EventEvaluator<LoggingEvent> ee = evaluatorList.get(i);
+        EventEvaluator<ILoggingEvent> ee = evaluatorList.get(i);
         try {
           if (ee.evaluate(event)) {
             printStack = false;

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java	Wed Feb 25 19:15:06 2009
@@ -11,13 +11,13 @@
 
 import java.util.List;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.joran.event.SaxEvent;
 import ch.qos.logback.core.sift.AppenderFactoryBase;
 import ch.qos.logback.core.sift.SiftingJoranConfiguratorBase;
 
-public class AppenderFactory extends AppenderFactoryBase<LoggingEvent>{
+public class AppenderFactory extends AppenderFactoryBase<ILoggingEvent>{
 
   String mdcKey;
   
@@ -26,7 +26,7 @@
       this.mdcKey = mdcKey;
   }
 
-  public SiftingJoranConfiguratorBase<LoggingEvent> getSiftingJoranConfigurator(String k) {
+  public SiftingJoranConfiguratorBase<ILoggingEvent> getSiftingJoranConfigurator(String k) {
     return new SiftingJoranConfigurator(mdcKey, k);
   }
 

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java	Wed Feb 25 19:15:06 2009
@@ -11,7 +11,7 @@
 
 import org.slf4j.MDC;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.sift.Discriminator;
 import ch.qos.logback.core.spi.ContextAwareBase;
 import ch.qos.logback.core.util.OptionHelper;
@@ -26,7 +26,7 @@
  * 
  */
 public class MDCBasedDiscriminator extends ContextAwareBase implements
-    Discriminator<LoggingEvent> {
+    Discriminator<ILoggingEvent> {
 
   private String key;
   private String defaultValue;
@@ -40,7 +40,7 @@
    * property. If that value is null, then return the value assigned to the
    * DefaultValue property.
    */
-  public String getDiscriminatingValue(LoggingEvent event) {
+  public String getDiscriminatingValue(ILoggingEvent event) {
     String mdcValue = MDC.get(key);
     if (mdcValue == null) {
       return defaultValue;

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java	Wed Feb 25 19:15:06 2009
@@ -9,7 +9,7 @@
  */
 package ch.qos.logback.classic.sift;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.joran.spi.DefaultClass;
 import ch.qos.logback.core.sift.AppenderTracker;
 import ch.qos.logback.core.sift.Discriminator;
@@ -25,21 +25,21 @@
  * 
  * @author Ceki Gulcu
  */
-public class SiftingAppender extends SiftingAppenderBase<LoggingEvent> {
+public class SiftingAppender extends SiftingAppenderBase<ILoggingEvent> {
 
-  AppenderTracker<LoggingEvent> getAppenderTracker() {
+  AppenderTracker<ILoggingEvent> getAppenderTracker() {
     return appenderTracker;
   }
 
   @Override
-  protected long getTimestamp(LoggingEvent event) {
+  protected long getTimestamp(ILoggingEvent event) {
     return event.getTimeStamp();
   }
   
 
   @Override
   @DefaultClass(MDCBasedDiscriminator.class)
-  public void setDiscriminator(Discriminator<LoggingEvent> discriminator) {
+  public void setDiscriminator(Discriminator<ILoggingEvent> discriminator) {
     super.setDiscriminator(discriminator);
   }
 

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java	Wed Feb 25 19:15:06 2009
@@ -13,7 +13,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.util.DefaultNestedComponentRules;
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.joran.action.ActionConst;
@@ -23,7 +23,7 @@
 import ch.qos.logback.core.joran.spi.RuleStore;
 import ch.qos.logback.core.sift.SiftingJoranConfiguratorBase;
 
-public class SiftingJoranConfigurator  extends SiftingJoranConfiguratorBase<LoggingEvent> {
+public class SiftingJoranConfigurator  extends SiftingJoranConfiguratorBase<ILoggingEvent> {
 
   String key;
   String value;
@@ -62,10 +62,10 @@
   }
 
   @SuppressWarnings("unchecked")
-  public Appender<LoggingEvent> getAppender() {
+  public Appender<ILoggingEvent> getAppender() {
     Map<String, Object> omap = interpreter.getInterpretationContext().getObjectMap();
     HashMap map = (HashMap) omap.get(ActionConst.APPENDER_BAG);
     Collection values = map.values();
-    return (Appender<LoggingEvent>) values.iterator().next();
+    return (Appender<ILoggingEvent>) values.iterator().next();
   }
 }

Copied: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java (from r2131, /logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java)
==============================================================================
--- /logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java	Wed Feb 25 19:15:06 2009
@@ -1,339 +1,38 @@
-/**
- * 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.spi;
 
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.HashMap;
 import java.util.Map;
 
-import org.slf4j.MDC;
 import org.slf4j.Marker;
-import org.slf4j.helpers.MessageFormatter;
-import org.slf4j.impl.LogbackMDCAdapter;
 
 import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
+import ch.qos.logback.core.spi.SDOAware;
+
+public interface ILoggingEvent extends SDOAware {
+
+  public String getThreadName();
+
+  public Level getLevel();
+
+  public String getMessage();
+  
+  public LoggerRemoteView getLoggerRemoteView();
+  
+  public String getFormattedMessage();
+
+  public Object[] getArgumentArray();
+
+  public ThrowableProxy getThrowableProxy();
+
+  public CallerData[] getCallerData();
+
+  public Marker getMarker();
+
+  public Map<String, String> getMDCPropertyMap();
+
+  public long getTimeStamp();
+  
+  public long getContextBirthTime();
+  
+  public void prepareForDeferredProcessing();
 
-/**
- * The internal representation of logging events. When an affirmative decision
- * is made to log then a <code>LoggingEvent</code> instance is created. This
- * instance is passed around to the different Logback components.
- * 
- * <p> Writers of Logback components such as appenders should be aware of that
- * some of the LoggingEvent fields are initialized lazily. Therefore, an
- * appender wishing to output data to be later correctly read by a receiver,
- * must initialize "lazy" fields prior to writing them out. See the
- * {@link #prepareForDeferredProcessing()} method for the exact list. </p>
- * 
- * @author Ceki G&uuml;lc&uuml;
- * @author S&eacute;bastien Pennec
- */
-public class LoggingEvent implements Serializable {
-
-  private static final long serialVersionUID = 3075964498087694229L;
-
-  private static final int NULL_ARGUMENT_ARRAY = -1;
-  private static final String NULL_ARGUMENT_ARRAY_ELEMENT = "NULL_ARGUMENT_ARRAY_ELEMENT";
-
-  /**
-   * 
-   */
-  private static long startTime = System.currentTimeMillis();
-
-  /**
-   * Fully qualified name of the calling Logger class. This field does not
-   * survive serialization.
-   * 
-   * <p> Note that the getCallerInformation() method relies on this fact.
-   */
-  transient String fqnOfLoggerClass;
-
-  /**
-   * The name of thread in which this logging event was generated.
-   */
-  private String threadName;
-
-  /**
-   * Level of logging event.
-   * 
-   * <p> This field should not be accessed directly. You shoud use the {@link
-   * #getLevel} method instead. </p>
-   * 
-   */
-  private transient Level level;
-
-  private String message;
-
-  // we gain significant space at serialization time by marking
-  // formattedMessage as transient and constructing it lazily in
-  // getFormmatedMessage()
-  private transient String formattedMessage;
-
-  private transient Object[] argumentArray;
-
-  private ThrowableProxy throwableProxy;
-
-  private CallerData[] callerDataArray;
-  private LoggerRemoteView loggerRemoteView;
-
-  private Marker marker;
-
-  private Map<String, String> mdcPropertyMap;
-
-  /**
-   * The number of milliseconds elapsed from 1/1/1970 until logging event was
-   * created.
-   */
-  private long timeStamp;
-
-  public LoggingEvent() {
-  }
-
-  public LoggingEvent(String fqcn, Logger logger, Level level, String message,
-      Throwable throwable, Object[] argArray) {
-    this.fqnOfLoggerClass = fqcn;
-    this.loggerRemoteView = logger.getLoggerRemoteView();
-    this.level = level;
-    this.message = message;
-
-    if (throwable != null) {
-      this.throwableProxy = new ThrowableProxy(throwable);
-    }
-
-    // bug 85 (we previously failed to set this.argumentArray)
-    this.argumentArray = argArray;
-
-    timeStamp = System.currentTimeMillis();
-
-    // the case is ugly but under the circumstances acceptable
-    LogbackMDCAdapter logbackMDCAdapter = (LogbackMDCAdapter) MDC
-        .getMDCAdapter();
-    mdcPropertyMap = logbackMDCAdapter.getPropertyMap();
-  }
-
-  public void setArgumentArray(Object[] argArray) {
-    if (this.argumentArray != null) {
-      throw new IllegalStateException("argArray has been already set");
-    }
-    this.argumentArray = argArray;
-  }
-
-  public Object[] getArgumentArray() {
-    return this.argumentArray;
-  }
-
-  public Level getLevel() {
-    return level;
-  }
-
-  public String getThreadName() {
-    if (threadName == null) {
-      threadName = (Thread.currentThread()).getName();
-    }
-    return threadName;
-  }
-
-  /**
-   * @param threadName
-   *                The threadName to set.
-   * @throws IllegalStateException
-   *                 If threadName has been already set.
-   */
-  public void setThreadName(String threadName) throws IllegalStateException {
-    if (this.threadName != null) {
-      throw new IllegalStateException("threadName has been already set");
-    }
-    this.threadName = threadName;
-  }
-
-  /**
-   * Returns the throwable information contained within this event. May be
-   * <code>null</code> if there is no such information.
-   */
-  public ThrowableProxy getThrowableProxy() {
-    return throwableProxy;
-  }
-
-  /**
-   * Set this event's throwable information.
-   */
-  public void setThrowableProxy(ThrowableProxy tp) {
-    if (throwableProxy != null) {
-      throw new IllegalStateException("ThrowableProxy has been already set.");
-    } else {
-      throwableProxy = tp;
-    }
-  }
-
-  /**
-   * This method should be called prior to serializing an event. It should also
-   * be called when using asynchronous or deferred logging.
-   * 
-   * <p> Note that due to performance concerns, this method does NOT extract
-   * caller data. It is the responsibility of the caller to extract caller
-   * information.
-   */
-  public void prepareForDeferredProcessing() {
-    this.getThreadName();
-    // fixes http://jira.qos.ch/browse/LBCLASSIC-104
-    if (mdcPropertyMap != null) {
-      mdcPropertyMap = new HashMap<String, String>(mdcPropertyMap);
-    }
-  }
-
-  public LoggerRemoteView getLoggerRemoteView() {
-    return loggerRemoteView;
-  }
-
-  public void setLoggerRemoteView(LoggerRemoteView loggerRemoteView) {
-    this.loggerRemoteView = loggerRemoteView;
-  }
-
-  public String getMessage() {
-    return message;
-  }
-
-  public void setMessage(String message) {
-    if (this.message != null) {
-      throw new IllegalStateException(
-          "The message for this event has been set already.");
-    }
-    this.message = message;
-  }
-
-  public long getTimeStamp() {
-    return timeStamp;
-  }
-
-  public void setTimeStamp(long timeStamp) {
-    this.timeStamp = timeStamp;
-  }
-
-  public void setLevel(Level level) {
-    if (this.level != null) {
-      throw new IllegalStateException(
-          "The level has been already set for this event.");
-    }
-    this.level = level;
-  }
-
-  /**
-   * The time at which this class was loaded into memory, expressed in
-   * millisecond elapsed since the epoch (1.1.1970).
-   * 
-   * @return The time as measured when this class was loaded into memory.
-   */
-  public static final long getStartTime() {
-    return startTime;
-  }
-
-  /**
-   * Get the caller information for this logging event. If caller information is
-   * null at the time of its invocation, this method extracts location
-   * information. The collected information is cached for future use.
-   * 
-   * <p> Note that after serialization it is impossible to correctly extract
-   * caller information. </p>
-   */
-  public CallerData[] getCallerData() {
-    // we rely on the fact that fqnOfLoggerClass does not survive
-    // serialization
-    if (callerDataArray == null && fqnOfLoggerClass != null) {
-      callerDataArray = CallerData.extract(new Throwable(), fqnOfLoggerClass);
-    }
-    return callerDataArray;
-  }
-
-  public void setCallerInformation(CallerData[] callerDataArray) {
-    this.callerDataArray = callerDataArray;
-  }
-
-  public Marker getMarker() {
-    return marker;
-  }
-
-  public void setMarker(Marker marker) {
-    if (this.marker != null) {
-      throw new IllegalStateException(
-          "The marker has been already set for this event.");
-    }
-    this.marker = marker;
-  }
-
-  // computer formatted lazy as suggested in
-  // http://jira.qos.ch/browse/LBCLASSIC-47
-  public String getFormattedMessage() {
-    if (formattedMessage != null) {
-      return formattedMessage;
-    }
-
-    if (argumentArray != null) {
-      formattedMessage = MessageFormatter.arrayFormat(message, argumentArray);
-    } else {
-      formattedMessage = message;
-    }
-
-    return formattedMessage;
-  }
-
-  public Map<String, String> getMDCPropertyMap() {
-    return mdcPropertyMap;
-  }
-
-  private void writeObject(ObjectOutputStream out) throws IOException {
-    out.defaultWriteObject();
-    out.writeInt(level.levelInt);
-    if (argumentArray != null) {
-      int len = argumentArray.length;
-      out.writeInt(len);
-      for (int i = 0; i < argumentArray.length; i++) {
-        if (argumentArray[i] != null) {
-          out.writeObject(argumentArray[i].toString());
-        } else {
-          out.writeObject(NULL_ARGUMENT_ARRAY_ELEMENT);
-        }
-      }
-    } else {
-      out.writeInt(NULL_ARGUMENT_ARRAY);
-    }
-
-  }
-
-  private void readObject(ObjectInputStream in) throws IOException,
-      ClassNotFoundException {
-    in.defaultReadObject();
-    int levelInt = in.readInt();
-    level = Level.toLevel(levelInt);
-
-    int argArrayLen = in.readInt();
-    if (argArrayLen != NULL_ARGUMENT_ARRAY) {
-      argumentArray = new String[argArrayLen];
-      for (int i = 0; i < argArrayLen; i++) {
-        Object val = in.readObject();
-        if (!NULL_ARGUMENT_ARRAY_ELEMENT.equals(val)) {
-          argumentArray[i] = val;
-        }
-      }
-    }
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder();
-    sb.append('[');
-    sb.append(level).append("] ");
-    sb.append(getFormattedMessage());
-    return sb.toString();
-  }
 }

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextRemoteView.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextRemoteView.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextRemoteView.java	Wed Feb 25 19:15:06 2009
@@ -34,11 +34,13 @@
 
   final String name;
   final Map<String, String> propertyMap;
-
+  final long birthTime;
+  
   public LoggerContextRemoteView(LoggerContext lc) {
     // this(lc.getName(), lc.getPropertyMap());
     this.name = lc.getName();
     this.propertyMap = lc.getCopyOfPropertyMap();
+    this.birthTime = lc.getBithTime();
   }
 
   // public LoggerContextRemoteView(String name, Map<String, String>
@@ -55,4 +57,7 @@
     return propertyMap;
   }
 
+  public long getBirthTime() {
+    return birthTime;
+  }
 }

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerRemoteView.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerRemoteView.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerRemoteView.java	Wed Feb 25 19:15:06 2009
@@ -43,5 +43,6 @@
   public String getName() {
     return name;
   }
+  
 
 }

Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java	Wed Feb 25 19:15:06 2009
@@ -0,0 +1,338 @@
+/**
+ * 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.spi;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.slf4j.MDC;
+import org.slf4j.Marker;
+import org.slf4j.helpers.MessageFormatter;
+import org.slf4j.impl.LogbackMDCAdapter;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+
+/**
+ * The internal representation of logging events. When an affirmative decision
+ * is made to log then a <code>LoggingEvent</code> instance is created. This
+ * instance is passed around to the different Logback components.
+ * 
+ * <p> Writers of Logback components such as appenders should be aware of that
+ * some of the LoggingEvent fields are initialized lazily. Therefore, an
+ * appender wishing to output data to be later correctly read by a receiver,
+ * must initialize "lazy" fields prior to writing them out. See the
+ * {@link #prepareForDeferredProcessing()} method for the exact list. </p>
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * @author S&eacute;bastien Pennec
+ */
+public class LoggingEvent implements ILoggingEvent {
+
+  private static final long serialVersionUID = 3075964498087694229L;
+
+  private static final int NULL_ARGUMENT_ARRAY = -1;
+  private static final String NULL_ARGUMENT_ARRAY_ELEMENT = "NULL_ARGUMENT_ARRAY_ELEMENT";
+
+  /**
+   * Fully qualified name of the calling Logger class. This field does not
+   * survive serialization.
+   * 
+   * <p> Note that the getCallerInformation() method relies on this fact.
+   */
+  transient String fqnOfLoggerClass;
+
+  /**
+   * The name of thread in which this logging event was generated.
+   */
+  private String threadName;
+
+  /**
+   * Level of logging event.
+   * 
+   * <p> This field should not be accessed directly. You shoud use the {@link
+   * #getLevel} method instead. </p>
+   * 
+   */
+  private transient Level level;
+
+  private String message;
+
+  // we gain significant space at serialization time by marking
+  // formattedMessage as transient and constructing it lazily in
+  // getFormmatedMessage()
+  private transient String formattedMessage;
+
+  private transient Object[] argumentArray;
+
+  private ThrowableProxy throwableProxy;
+
+  private CallerData[] callerDataArray;
+  private LoggerRemoteView loggerRemoteView;
+
+  private Marker marker;
+
+  private Map<String, String> mdcPropertyMap;
+
+  /**
+   * The number of milliseconds elapsed from 1/1/1970 until logging event was
+   * created.
+   */
+  private long timeStamp;
+
+  private LoggingEventSDO loggingEventSDO;
+  
+  public LoggingEvent() {
+  }
+
+  public LoggingEvent(String fqcn, Logger logger, Level level, String message,
+      Throwable throwable, Object[] argArray) {
+    this.fqnOfLoggerClass = fqcn;
+    this.loggerRemoteView = logger.getLoggerRemoteView();
+    this.level = level;
+    this.message = message;
+
+    if (throwable != null) {
+      this.throwableProxy = new ThrowableProxy(throwable);
+    }
+
+    // bug 85 (we previously failed to set this.argumentArray)
+    this.argumentArray = argArray;
+
+    timeStamp = System.currentTimeMillis();
+
+    // the case is ugly but under the circumstances acceptable
+    LogbackMDCAdapter logbackMDCAdapter = (LogbackMDCAdapter) MDC
+        .getMDCAdapter();
+    mdcPropertyMap = logbackMDCAdapter.getPropertyMap();
+  }
+
+  public void setArgumentArray(Object[] argArray) {
+    if (this.argumentArray != null) {
+      throw new IllegalStateException("argArray has been already set");
+    }
+    this.argumentArray = argArray;
+  }
+
+  public Object[] getArgumentArray() {
+    return this.argumentArray;
+  }
+
+  public Level getLevel() {
+    return level;
+  }
+
+  public String getThreadName() {
+    if (threadName == null) {
+      threadName = (Thread.currentThread()).getName();
+    }
+    return threadName;
+  }
+
+  /**
+   * @param threadName
+   *                The threadName to set.
+   * @throws IllegalStateException
+   *                 If threadName has been already set.
+   */
+  public void setThreadName(String threadName) throws IllegalStateException {
+    if (this.threadName != null) {
+      throw new IllegalStateException("threadName has been already set");
+    }
+    this.threadName = threadName;
+  }
+
+  /**
+   * Returns the throwable information contained within this event. May be
+   * <code>null</code> if there is no such information.
+   */
+  public ThrowableProxy getThrowableProxy() {
+    return throwableProxy;
+  }
+
+  /**
+   * Set this event's throwable information.
+   */
+  public void setThrowableProxy(ThrowableProxy tp) {
+    if (throwableProxy != null) {
+      throw new IllegalStateException("ThrowableProxy has been already set.");
+    } else {
+      throwableProxy = tp;
+    }
+  }
+
+  /**
+   * This method should be called prior to serializing an event. It should also
+   * be called when using asynchronous or deferred logging.
+   * 
+   * <p> Note that due to performance concerns, this method does NOT extract
+   * caller data. It is the responsibility of the caller to extract caller
+   * information.
+   */
+  public void prepareForDeferredProcessing() {
+    this.getThreadName();
+    // fixes http://jira.qos.ch/browse/LBCLASSIC-104
+    if (mdcPropertyMap != null) {
+      mdcPropertyMap = new HashMap<String, String>(mdcPropertyMap);
+    }
+  }
+
+  public LoggerRemoteView getLoggerRemoteView() {
+    return loggerRemoteView;
+  }
+
+  public void setLoggerRemoteView(LoggerRemoteView loggerRemoteView) {
+    this.loggerRemoteView = loggerRemoteView;
+  }
+
+  public String getMessage() {
+    return message;
+  }
+
+  public void setMessage(String message) {
+    if (this.message != null) {
+      throw new IllegalStateException(
+          "The message for this event has been set already.");
+    }
+    this.message = message;
+  }
+
+  public long getTimeStamp() {
+    return timeStamp;
+  }
+
+  public void setTimeStamp(long timeStamp) {
+    this.timeStamp = timeStamp;
+  }
+
+  public void setLevel(Level level) {
+    if (this.level != null) {
+      throw new IllegalStateException(
+          "The level has been already set for this event.");
+    }
+    this.level = level;
+  }
+
+  /**
+   * Get the caller information for this logging event. If caller information is
+   * null at the time of its invocation, this method extracts location
+   * information. The collected information is cached for future use.
+   * 
+   * <p> Note that after serialization it is impossible to correctly extract
+   * caller information. </p>
+   */
+  public CallerData[] getCallerData() {
+    // we rely on the fact that fqnOfLoggerClass does not survive
+    // serialization
+    if (callerDataArray == null && fqnOfLoggerClass != null) {
+      callerDataArray = CallerData.extract(new Throwable(), fqnOfLoggerClass);
+    }
+    return callerDataArray;
+  }
+
+  public void setCallerInformation(CallerData[] callerDataArray) {
+    this.callerDataArray = callerDataArray;
+  }
+
+  public Marker getMarker() {
+    return marker;
+  }
+
+  public void setMarker(Marker marker) {
+    if (this.marker != null) {
+      throw new IllegalStateException(
+          "The marker has been already set for this event.");
+    }
+    this.marker = marker;
+  }
+
+  public long getContextBirthTime() {
+    return loggerRemoteView.loggerContextView.getBirthTime();
+  }
+
+  
+  // computer formatted lazy as suggested in
+  // http://jira.qos.ch/browse/LBCLASSIC-47
+  public String getFormattedMessage() {
+    if (formattedMessage != null) {
+      return formattedMessage;
+    }
+
+    if (argumentArray != null) {
+      formattedMessage = MessageFormatter.arrayFormat(message, argumentArray);
+    } else {
+      formattedMessage = message;
+    }
+
+    return formattedMessage;
+  }
+
+  public Map<String, String> getMDCPropertyMap() {
+    return mdcPropertyMap;
+  }
+
+  private void writeObject(ObjectOutputStream out) throws IOException {
+    out.defaultWriteObject();
+    out.writeInt(level.levelInt);
+    if (argumentArray != null) {
+      int len = argumentArray.length;
+      out.writeInt(len);
+      for (int i = 0; i < argumentArray.length; i++) {
+        if (argumentArray[i] != null) {
+          out.writeObject(argumentArray[i].toString());
+        } else {
+          out.writeObject(NULL_ARGUMENT_ARRAY_ELEMENT);
+        }
+      }
+    } else {
+      out.writeInt(NULL_ARGUMENT_ARRAY);
+    }
+
+  }
+  
+  private void readObject(ObjectInputStream in) throws IOException,
+      ClassNotFoundException {
+    in.defaultReadObject();
+    int levelInt = in.readInt();
+    level = Level.toLevel(levelInt);
+
+    int argArrayLen = in.readInt();
+    if (argArrayLen != NULL_ARGUMENT_ARRAY) {
+      argumentArray = new String[argArrayLen];
+      for (int i = 0; i < argArrayLen; i++) {
+        Object val = in.readObject();
+        if (!NULL_ARGUMENT_ARRAY_ELEMENT.equals(val)) {
+          argumentArray[i] = val;
+        }
+      }
+    }
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append('[');
+    sb.append(level).append("] ");
+    sb.append(getFormattedMessage());
+    return sb.toString();
+  }
+
+  public Serializable getSDO() {
+    if(loggingEventSDO == null) {
+      loggingEventSDO = LoggingEventSDO.build(this);
+    }
+    return loggingEventSDO;
+  }
+}

Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventSDO.java
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventSDO.java	Wed Feb 25 19:15:06 2009
@@ -0,0 +1,163 @@
+package ch.qos.logback.classic.spi;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.Map;
+
+import org.slf4j.Marker;
+import org.slf4j.helpers.MessageFormatter;
+
+import ch.qos.logback.classic.Level;
+
+public class LoggingEventSDO implements ILoggingEvent, Serializable {
+
+  private static final long serialVersionUID = 6553722650255690312L;
+
+  private static final int NULL_ARGUMENT_ARRAY = -1;
+  private static final String NULL_ARGUMENT_ARRAY_ELEMENT = "NULL_ARGUMENT_ARRAY_ELEMENT";
+
+  private String threadName;
+  private transient Level level;
+  private String message;
+
+  // we gain significant space at serialization time by marking
+  // formattedMessage as transient and constructing it lazily in
+  // getFormmatedMessage()
+  private transient String formattedMessage;
+
+  private transient Object[] argumentArray;
+
+  private ThrowableProxy throwableProxy;
+  private CallerData[] callerDataArray;
+  private Marker marker;
+  private Map<String, String> mdcPropertyMap;
+  private LoggerRemoteView lrv;
+  private long timeStamp;
+
+  static LoggingEventSDO build(ILoggingEvent le) {
+
+    LoggingEventSDO ledo = new LoggingEventSDO();
+    ledo.lrv = le.getLoggerRemoteView();
+    ledo.threadName = le.getThreadName();
+    ledo.level = (le.getLevel());
+    ledo.message = (le.getMessage());
+    ledo.argumentArray = (le.getArgumentArray());
+    ledo.marker = le.getMarker();
+    ledo.mdcPropertyMap = le.getMDCPropertyMap();
+    ledo.setTimeStamp(le.getTimeStamp());
+    ledo.throwableProxy = le.getThrowableProxy();
+    return ledo;
+  }
+
+  public String getThreadName() {
+    return threadName;
+  }
+
+  public Level getLevel() {
+    return level;
+  }
+  
+  public String getMessage() {
+    return message;
+  }
+
+  public String getFormattedMessage() {
+    if (formattedMessage != null) {
+      return formattedMessage;
+    }
+
+    if (argumentArray != null) {
+      formattedMessage = MessageFormatter.arrayFormat(message, argumentArray);
+    } else {
+      formattedMessage = message;
+    }
+
+    return formattedMessage;
+  }
+
+  public Object[] getArgumentArray() {
+    return argumentArray;
+  }
+
+  public ThrowableProxy getThrowableProxy() {
+    return throwableProxy;
+  }
+
+  public CallerData[] getCallerData() {
+    return callerDataArray;
+  }
+
+  public Marker getMarker() {
+    return marker;
+  }
+
+  public long getTimeStamp() {
+    return timeStamp;
+  }
+
+  public void setTimeStamp(long timeStamp) {
+    this.timeStamp = timeStamp;
+  }
+
+  private void writeObject(ObjectOutputStream out) throws IOException {
+    out.defaultWriteObject();
+    out.writeInt(level.levelInt);
+    if (argumentArray != null) {
+      int len = argumentArray.length;
+      out.writeInt(len);
+      for (int i = 0; i < argumentArray.length; i++) {
+        if (argumentArray[i] != null) {
+          out.writeObject(argumentArray[i].toString());
+        } else {
+          out.writeObject(NULL_ARGUMENT_ARRAY_ELEMENT);
+        }
+      }
+    } else {
+      out.writeInt(NULL_ARGUMENT_ARRAY);
+    }
+
+  }
+
+  private void readObject(ObjectInputStream in) throws IOException,
+      ClassNotFoundException {
+    in.defaultReadObject();
+    int levelInt = in.readInt();
+    level = Level.toLevel(levelInt);
+
+    int argArrayLen = in.readInt();
+    if (argArrayLen != NULL_ARGUMENT_ARRAY) {
+      argumentArray = new String[argArrayLen];
+      for (int i = 0; i < argArrayLen; i++) {
+        Object val = in.readObject();
+        if (!NULL_ARGUMENT_ARRAY_ELEMENT.equals(val)) {
+          argumentArray[i] = val;
+        }
+      }
+    }
+  }
+
+  public long getContextBirthTime() {
+    return lrv.loggerContextView.getBirthTime();
+  }
+
+  public LoggerRemoteView getLoggerRemoteView() {
+    return lrv;
+  }
+
+  public Map<String, String> getMDCPropertyMap() {
+    return mdcPropertyMap;
+  }
+
+  public void prepareForDeferredProcessing() {
+  }
+
+  /**
+   * LoggerEventSDO is its own SDO
+   */
+  public Serializable getSDO() {
+    return this;
+  }
+
+}

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/util/LevelToSyslogSeverity.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/util/LevelToSyslogSeverity.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/util/LevelToSyslogSeverity.java	Wed Feb 25 19:15:06 2009
@@ -11,7 +11,7 @@
 package ch.qos.logback.classic.util;
 
 import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.net.SyslogConstants;
 
 public class LevelToSyslogSeverity {
@@ -21,7 +21,7 @@
    * methods i.e TRACE, DEBUG, WARN, INFO and ERROR are converted.
    * 
    */
-  static public int convert(LoggingEvent event) {
+  static public int convert(ILoggingEvent event) {
 
     Level level = event.getLevel();
 

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java	Wed Feb 25 19:15:06 2009
@@ -19,7 +19,7 @@
 
 import ch.qos.logback.classic.ClassicGlobal;
 import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.Appender;
 
 
@@ -55,7 +55,7 @@
   /**
    * Array of appenders.
    */
-  private ArrayList<Appender<LoggingEvent>> appenderList;
+  private ArrayList<Appender<ILoggingEvent>> appenderList;
 
   /**
    * Additivity is set to true by default, that is children inherit the
@@ -171,7 +171,7 @@
    * @param event
    *          The event to log
    */
-  public void callAppenders(LoggingEvent event) {
+  public void callAppenders(ILoggingEvent event) {
     int writes = 0;
 
     for (HLogger l = this; l != null; l = l.parent) {
@@ -195,9 +195,9 @@
     // }
   }
 
-  private int appendLoopOnAppenders(LoggingEvent event) {
+  private int appendLoopOnAppenders(ILoggingEvent event) {
     int size = 0;
-    Appender<LoggingEvent> appender;
+    Appender<ILoggingEvent> appender;
 
     if (appenderList != null) {
       size = appenderList.size();

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerPerfTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerPerfTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerPerfTest.java	Wed Feb 25 19:15:06 2009
@@ -15,7 +15,7 @@
 import org.junit.Test;
 import org.slf4j.helpers.BogoPerf;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.turbo.NOPTurboFilter;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.UnsynchronizedAppenderBase;
@@ -150,7 +150,7 @@
   double computeDurationOfEnabledLog(long len) {
     lbLogger.setLevel(Level.ALL);
 
-    NOPAppender<LoggingEvent> nopAppender = new NOPAppender<LoggingEvent>();
+    NOPAppender<ILoggingEvent> nopAppender = new NOPAppender<ILoggingEvent>();
     nopAppender.start();
     ((ch.qos.logback.classic.Logger) logger).addAppender(nopAppender);
     for (long i = 0; i < len; i++) {
@@ -168,7 +168,7 @@
 
   @Test
   public void testThreadedLogging() throws InterruptedException {
-    SleepAppender<LoggingEvent> appender = new SleepAppender<LoggingEvent>();
+    SleepAppender<ILoggingEvent> appender = new SleepAppender<ILoggingEvent>();
 
     int MILLIS_PER_CALL = 250;
     int NANOS_PER_CALL = 250 * 1000 * 1000;

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java	Wed Feb 25 19:15:06 2009
@@ -20,7 +20,7 @@
 import org.junit.Test;
 import org.slf4j.LoggerFactory;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.read.ListAppender;
 import ch.qos.logback.core.status.Status;
 
@@ -30,11 +30,11 @@
   Logger root = lc.getLogger(LoggerContext.ROOT_NAME);
   Logger loggerTest = lc.getLogger(LoggerTest.class);
 
-  ListAppender<LoggingEvent> listAppender = new ListAppender<LoggingEvent>();
+  ListAppender<ILoggingEvent> listAppender = new ListAppender<ILoggingEvent>();
 
   @Test
   public void smoke() {
-    ListAppender<LoggingEvent> listAppender = new ListAppender<LoggingEvent>();
+    ListAppender<ILoggingEvent> listAppender = new ListAppender<ILoggingEvent>();
     listAppender.start();
     root.addAppender(listAppender);
     Logger logger = lc.getLogger(LoggerTest.class);

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java	Wed Feb 25 19:15:06 2009
@@ -14,19 +14,19 @@
 import org.junit.Before;
 import org.junit.Test;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.read.ListAppender;
 
 public class MessageFormattingTest  {
 
   LoggerContext lc;
-  ListAppender<LoggingEvent> listAppender;
+  ListAppender<ILoggingEvent> listAppender;
 
   @Before
   public void setUp() {
     lc = new LoggerContext();
     Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
-    listAppender = new ListAppender<LoggingEvent>();
+    listAppender = new ListAppender<ILoggingEvent>();
     listAppender.setContext(lc);
     listAppender.start();
     logger.addAppender(listAppender);
@@ -36,7 +36,7 @@
   public void testFormattingOneArg() {
     Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
     logger.debug("{}", new Integer(12));
-    LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+    ILoggingEvent event = (ILoggingEvent) listAppender.list.get(0);
     assertEquals("12", event.getFormattedMessage());
   }
 
@@ -44,7 +44,7 @@
   public void testFormattingTwoArg() {
     Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
     logger.debug("{}-{}", new Integer(12), new Integer(13));
-    LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+    ILoggingEvent event = (ILoggingEvent) listAppender.list.get(0);
     assertEquals("12-13", event.getFormattedMessage());
   }
 
@@ -52,7 +52,7 @@
   public void testNoFormatting() {
     Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
     logger.debug("test", new Integer(12), new Integer(13));
-    LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+    ILoggingEvent event = (ILoggingEvent) listAppender.list.get(0);
     assertEquals("test", event.getFormattedMessage());
   }
 
@@ -60,7 +60,7 @@
   public void testNoFormatting2() {
     Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
     logger.debug("test");
-    LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+    ILoggingEvent event = (ILoggingEvent) listAppender.list.get(0);
     assertEquals("test", event.getFormattedMessage());
   }
 
@@ -68,7 +68,7 @@
   public void testMessageConverter() {
     Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
     logger.debug("{}", 12);
-    LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+    ILoggingEvent event = (ILoggingEvent) listAppender.list.get(0);
     PatternLayout layout = new PatternLayout();
     layout.setContext(lc);
     layout.setPattern("%m");

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	Wed Feb 25 19:15:06 2009
@@ -23,6 +23,7 @@
 
 import ch.qos.logback.classic.joran.JoranConfigurator;
 import ch.qos.logback.classic.pattern.ConverterTest;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.classic.testUtil.SampleConverter;
 import ch.qos.logback.classic.util.TeztConstants;
@@ -39,7 +40,7 @@
   Logger logger = lc.getLogger(ConverterTest.class);
   Logger root = lc.getLogger(LoggerContext.ROOT_NAME);
   
-  LoggingEvent le;
+  ILoggingEvent le;
   List optionList = new ArrayList();
 
   public PatternLayoutTest() {
@@ -53,14 +54,14 @@
     pl.setContext(lc);
   }
 
-  LoggingEvent makeLoggingEvent(Exception ex) {
+  ILoggingEvent makeLoggingEvent(Exception ex) {
     return new LoggingEvent(
         ch.qos.logback.core.pattern.FormattingConverter.class.getName(),
         logger, Level.INFO, "Some message", ex, null);
   }
 
   @Override
-  public LoggingEvent getEventObject() {
+  public ILoggingEvent getEventObject() {
     return makeLoggingEvent(null);
   }
 

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java	Wed Feb 25 19:15:06 2009
@@ -11,6 +11,7 @@
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.pattern.ConverterTest;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.boolex.EvaluationException;
 import ch.qos.logback.core.boolex.JaninoEventEvaluatorBase;
@@ -44,7 +45,7 @@
     jee.setContext(loggerContext);
     jee.start();
 
-    LoggingEvent event = makeLoggingEvent(null);
+    ILoggingEvent event = makeLoggingEvent(null);
     //System.out.println(event);
     assertTrue(jee.evaluate(event));
   }
@@ -56,7 +57,7 @@
     jee.setContext(loggerContext);
     jee.start();
 
-    LoggingEvent event = makeLoggingEvent(null);
+    ILoggingEvent event = makeLoggingEvent(null);
     //System.out.println(event);
     assertTrue(jee.evaluate(event));
   }
@@ -68,7 +69,7 @@
     jee.setContext(loggerContext);
     jee.start();
 
-    LoggingEvent event = makeLoggingEvent(null);
+    ILoggingEvent event = makeLoggingEvent(null);
     assertTrue(jee.evaluate(event));
   }
 
@@ -81,7 +82,7 @@
     jee.addMatcher(matcherX);
     jee.start();
 
-    LoggingEvent event = makeLoggingEvent(null);
+    ILoggingEvent event = makeLoggingEvent(null);
     assertTrue(jee.evaluate(event));
   }
 
@@ -106,7 +107,7 @@
     jee.addMatcher(matcherX);
     jee.start();
 
-    LoggingEvent event = makeLoggingEvent(null);
+    ILoggingEvent event = makeLoggingEvent(null);
     try {
       jee.evaluate(event);
       fail("We should not reach this point");
@@ -165,7 +166,7 @@
 
     assertTrue(jee.isStarted());
 
-    LoggingEvent event = makeLoggingEvent(null);
+    ILoggingEvent event = makeLoggingEvent(null);
 
     for (int i = 0; i < JaninoEventEvaluatorBase.ERROR_THRESHOLD; i++) {
       try {
@@ -186,7 +187,7 @@
   // LoggingEvent)
   // with 10 parameters 510 nanos (all levels + fields)
   void loop(JaninoEventEvaluator jee, String msg) throws Exception {
-    LoggingEvent event = makeLoggingEvent(null);
+    ILoggingEvent event = makeLoggingEvent(null);
     //final long start = System.nanoTime();
     for (int i = 0; i < LEN; i++) {
       jee.evaluate(event);

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderTest.java	Wed Feb 25 19:15:06 2009
@@ -1,6 +1,7 @@
 package ch.qos.logback.classic.db;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -17,6 +18,7 @@
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.spi.CallerData;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.db.DriverManagerConnectionSource;
 
@@ -69,7 +71,7 @@
 
   @Test
   public void testAppendLoggingEvent() throws SQLException {
-    LoggingEvent event = createLoggingEvent();
+    ILoggingEvent event = createLoggingEvent();
 
     appender.append(event);
     //StatusPrinter.print(lc.getStatusManager());
@@ -97,7 +99,7 @@
   }
   
   public void testAppendThrowable() throws SQLException {
-    LoggingEvent event = createLoggingEvent();
+    ILoggingEvent event = createLoggingEvent();
 
     appender.append(event);
     
@@ -115,7 +117,7 @@
   }
   
   public void testContextInfo() throws SQLException {
-    LoggingEvent event = createLoggingEvent();
+    ILoggingEvent event = createLoggingEvent();
     lc.putProperty("testKey1", "testValue1");
     
     appender.append(event);
@@ -136,7 +138,7 @@
   
   public void testAppendMultipleEvents() throws SQLException {
     for (int i = 0; i < 10; i++) {
-      LoggingEvent event = createLoggingEvent();
+      ILoggingEvent event = createLoggingEvent();
       appender.append(event);
     }
     
@@ -154,8 +156,8 @@
   }
   
 
-  private LoggingEvent createLoggingEvent() {
-    LoggingEvent le = new LoggingEvent(this.getClass().getName(), logger,
+  private ILoggingEvent createLoggingEvent() {
+    ILoggingEvent le = new LoggingEvent(this.getClass().getName(), logger,
         Level.DEBUG, "test message", new Exception("test Ex"), null);
     return le;
   }

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java	Wed Feb 25 19:15:06 2009
@@ -22,6 +22,7 @@
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.TestConstants;
 import ch.qos.logback.classic.joran.JoranConfigurator;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.classic.spi.ThrowableDataPoint;
 import ch.qos.logback.classic.spi.ThrowableProxy;
@@ -43,7 +44,7 @@
     lc = new LoggerContext();
     lc.setName("default");
 
-    ListAppender<LoggingEvent> appender = new ListAppender<LoggingEvent>();
+    ListAppender<ILoggingEvent> appender = new ListAppender<ILoggingEvent>();
     appender.setContext(lc);
     layout = new HTMLLayout();
     layout.setThrowableRenderer(new DefaultThrowableRenderer());
@@ -108,7 +109,7 @@
 
   @Test
   public void testDoLayout() throws Exception {
-    LoggingEvent le = createLoggingEvent();
+    ILoggingEvent le = createLoggingEvent();
 
     String result = layout.getFileHeader();
     result += layout.getPresentationHeader();
@@ -222,7 +223,7 @@
     root.getAppender("LIST");
     String msg = "Simon says";
     root.debug(msg);
-    StringListAppender<LoggingEvent> sla = (StringListAppender<LoggingEvent>) root
+    StringListAppender<ILoggingEvent> sla = (StringListAppender<ILoggingEvent>) root
         .getAppender("LIST");
     assertNotNull(sla);
     StatusPrinter.print(lc);

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	Wed Feb 25 19:15:06 2009
@@ -23,6 +23,7 @@
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.boolex.JaninoEventEvaluator;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.classic.util.TeztConstants;
 import ch.qos.logback.core.CoreConstants;
@@ -46,10 +47,10 @@
     assertNotNull(evaluator);
     
     Logger logger = loggerContext.getLogger("xx");
-    LoggingEvent event0 = new LoggingEvent("foo", logger, Level.DEBUG, "Hello world", null, null);
+    ILoggingEvent event0 = new LoggingEvent("foo", logger, Level.DEBUG, "Hello world", null, null);
     assertTrue(evaluator.evaluate(event0));
     
-    LoggingEvent event1 = new LoggingEvent("foo", logger, Level.DEBUG, "random blurb", null, null);
+    ILoggingEvent event1 = new LoggingEvent("foo", logger, Level.DEBUG, "random blurb", null, null);
     assertFalse(evaluator.evaluate(event1));
   }
   
@@ -94,7 +95,7 @@
     //StatusPrinter.print(loggerContext);
     
     String message = "stacktrace bla bla logging";
-    LoggingEvent event = new LoggingEvent(this.getClass().getName(), logger, Level.DEBUG, message, null, null);
+    ILoggingEvent event = new LoggingEvent(this.getClass().getName(), logger, Level.DEBUG, message, null, null);
     
     assertTrue(ee.evaluate(event));
   }

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java	Wed Feb 25 19:15:06 2009
@@ -19,7 +19,7 @@
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.turbo.DebugUsersTurboFilter;
 import ch.qos.logback.classic.turbo.NOPTurboFilter;
 import ch.qos.logback.classic.turbo.TurboFilter;
@@ -52,7 +52,7 @@
     String msg = "hello world";
     logger.debug(msg);
     assertEquals(1, listAppender.list.size());
-    LoggingEvent le = (LoggingEvent) listAppender.list.get(0);
+    ILoggingEvent le = (ILoggingEvent) listAppender.list.get(0);
     assertEquals(msg, le.getMessage());
   }
 
@@ -117,7 +117,7 @@
     logger.debug("toto");
     logger.debug(msg);
 
-    StringListAppender<LoggingEvent> slAppender = (StringListAppender<LoggingEvent>) loggerContext
+    StringListAppender<ILoggingEvent> slAppender = (StringListAppender<ILoggingEvent>) loggerContext
         .getLogger("root").getAppender("STR_LIST");
     assertNotNull(slAppender);
     assertEquals(2, slAppender.strList.size());
@@ -165,12 +165,12 @@
     logger.error("to be ignored");
 
     @SuppressWarnings("unchecked")
-    ListAppender<LoggingEvent> listAppender = (ListAppender) root
+    ListAppender<ILoggingEvent> listAppender = (ListAppender) root
         .getAppender("LIST");
 
     assertNotNull(listAppender);
     assertEquals(1, listAppender.list.size());
-    LoggingEvent back = listAppender.list.get(0);
+    ILoggingEvent back = listAppender.list.get(0);
     assertEquals(Level.WARN, back.getLevel());
     assertEquals("hello", back.getMessage());
   }
@@ -185,12 +185,12 @@
     logger.error("to be ignored");
 
     @SuppressWarnings("unchecked")
-    ListAppender<LoggingEvent> listAppender = (ListAppender) root
+    ListAppender<ILoggingEvent> listAppender = (ListAppender) root
         .getAppender("LIST");
 
     assertNotNull(listAppender);
     assertEquals(1, listAppender.list.size());
-    LoggingEvent back = listAppender.list.get(0);
+    ILoggingEvent back = listAppender.list.get(0);
     assertEquals(Level.WARN, back.getLevel());
     assertEquals("hello", back.getMessage());
   }
@@ -211,7 +211,7 @@
     logger.debug("hello user2");
 
     assertEquals(1, listAppender.list.size());
-    LoggingEvent le = (LoggingEvent) listAppender.list.get(0);
+    ILoggingEvent le = (ILoggingEvent) listAppender.list.get(0);
     assertEquals("hello user2", le.getMessage());
   }
 
@@ -234,9 +234,9 @@
     logger.debug("hello user3");
 
     assertEquals(2, listAppender.list.size());
-    LoggingEvent le = (LoggingEvent) listAppender.list.get(0);
+    ILoggingEvent le = (ILoggingEvent) listAppender.list.get(0);
     assertEquals("hello user1", le.getMessage());
-    le = (LoggingEvent) listAppender.list.get(1);
+    le = (ILoggingEvent) listAppender.list.get(1);
     assertEquals("hello user2", le.getMessage());
   }
 }

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/FileAppenderPerf.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/FileAppenderPerf.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/FileAppenderPerf.java	Wed Feb 25 19:15:06 2009
@@ -14,7 +14,7 @@
 
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.FileAppender;
 import ch.qos.logback.core.testUtil.RandomUtil;
 
@@ -28,7 +28,7 @@
   static LoggerContext buildLoggerContext(String filename, boolean safetyMode) {
     LoggerContext loggerContext = new LoggerContext();
 
-    FileAppender<LoggingEvent> fa = new FileAppender<LoggingEvent>();
+    FileAppender<ILoggingEvent> fa = new FileAppender<ILoggingEvent>();
 
     PatternLayout patternLayout = new PatternLayout();
     patternLayout.setPattern("%5p %c - %m%n");

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeFileAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeFileAppender.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeFileAppender.java	Wed Feb 25 19:15:06 2009
@@ -14,7 +14,7 @@
 
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.FileAppender;
 
 /**
@@ -53,7 +53,7 @@
       boolean safetyMode) {
     LoggerContext loggerContext = new LoggerContext();
 
-    FileAppender<LoggingEvent> fa = new FileAppender<LoggingEvent>();
+    FileAppender<ILoggingEvent> fa = new FileAppender<ILoggingEvent>();
 
     PatternLayout patternLayout = new PatternLayout();
     patternLayout.setPattern(stamp + " %5p - %m%n");

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeRollingFileAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeRollingFileAppender.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeRollingFileAppender.java	Wed Feb 25 19:15:06 2009
@@ -14,7 +14,7 @@
 
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.rolling.RollingFileAppender;
 import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
 import ch.qos.logback.core.util.StatusPrinter;
@@ -57,7 +57,7 @@
       boolean safetyMode) {
     LoggerContext loggerContext = new LoggerContext();
 
-    RollingFileAppender<LoggingEvent> rfa = new RollingFileAppender<LoggingEvent>();
+    RollingFileAppender<ILoggingEvent> rfa = new RollingFileAppender<ILoggingEvent>();
     PatternLayout patternLayout = new PatternLayout();
     patternLayout.setPattern(stamp + " %5p - %-50m%n");
     patternLayout.setContext(loggerContext);

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/DilutedSMTPAppenderTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/DilutedSMTPAppenderTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/DilutedSMTPAppenderTest.java	Wed Feb 25 19:15:06 2009
@@ -14,6 +14,7 @@
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.Layout;
 
@@ -35,7 +36,7 @@
     appender.start();
   }
 
-  private static Layout<LoggingEvent> buildLayout(LoggerContext lc) {
+  private static Layout<ILoggingEvent> buildLayout(LoggerContext lc) {
     PatternLayout layout = new PatternLayout();
     layout.setContext(lc);
     layout.setFileHeader("Some header\n");

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java	Wed Feb 25 19:15:06 2009
@@ -7,6 +7,7 @@
 import ch.qos.logback.classic.net.mock.MockQueue;
 import ch.qos.logback.classic.net.mock.MockQueueConnectionFactory;
 import ch.qos.logback.classic.net.mock.MockQueueSender;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.classic.util.MockInitialContext;
 import ch.qos.logback.classic.util.MockInitialContextFactory;
@@ -45,14 +46,14 @@
   public void testAppendOk() { 
     appender.start();
 
-    LoggingEvent le = createLoggingEvent();
+    ILoggingEvent le = createLoggingEvent();
     appender.append(le);
     
     MockQueueSender qs = (MockQueueSender)appender.queueSender;
     assertEquals(1, qs.getMessageList().size());
     ObjectMessage message = (ObjectMessage) qs.getMessageList().get(0);
     try {
-      assertEquals(le, message.getObject());
+      assertEquals(le.getSDO(), message.getObject());
     } catch (Exception e) {
       fail();
     }
@@ -64,7 +65,7 @@
     //make sure the append method does not work
     appender.queueSender = null;
     
-    LoggingEvent le = createLoggingEvent();
+    ILoggingEvent le = createLoggingEvent();
     for (int i = 1; i <= 3; i++) {
       appender.append(le);
       assertEquals(i, context.getStatusManager().getCount());
@@ -113,7 +114,7 @@
     assertFalse(appender.isStarted());
   }
 
-  private LoggingEvent createLoggingEvent() {
+  private ILoggingEvent createLoggingEvent() {
     LoggingEvent le = new LoggingEvent();
     le.setLevel(Level.DEBUG);
     le.setMessage("test message");

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java	Wed Feb 25 19:15:06 2009
@@ -18,6 +18,7 @@
 import ch.qos.logback.classic.net.mock.MockTopic;
 import ch.qos.logback.classic.net.mock.MockTopicConnectionFactory;
 import ch.qos.logback.classic.net.mock.MockTopicPublisher;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.classic.util.MockInitialContext;
 import ch.qos.logback.classic.util.MockInitialContextFactory;
@@ -57,14 +58,14 @@
   public void testAppendOk() { 
     appender.start();
 
-    LoggingEvent le = createLoggingEvent();
+    ILoggingEvent le = createLoggingEvent();
     appender.append(le);
     
     MockTopicPublisher tp = (MockTopicPublisher)appender.topicPublisher;
     assertEquals(1, tp.getMessageList().size());
     ObjectMessage message = (ObjectMessage) tp.getMessageList().get(0);
     try {
-      assertEquals(le, message.getObject());
+      assertEquals(le.getSDO(), message.getObject());
     } catch (Exception e) {
       fail();
     }
@@ -77,7 +78,7 @@
     //make sure the append method does not work
     appender.topicPublisher = null;
     
-    LoggingEvent le = createLoggingEvent();
+    ILoggingEvent le = createLoggingEvent();
     for (int i = 1; i <= 3; i++) {
       appender.append(le);
       assertEquals(i, context.getStatusManager().getCount());
@@ -219,7 +220,7 @@
     assertFalse(appender.isStarted());
   }
 
-  private LoggingEvent createLoggingEvent() {
+  private ILoggingEvent createLoggingEvent() {
     LoggingEvent le = new LoggingEvent();
     le.setLevel(Level.DEBUG);
     le.setMessage("test message");

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	Wed Feb 25 19:15:06 2009
@@ -15,6 +15,6 @@
 
 @RunWith(Suite.class)
 @SuiteClasses( { SyslogAppenderTest.class, DilutedSMTPAppenderTest.class,
-    SocketAppenderTest.class, JMSTopicAppenderTest.class })
+    SocketAppenderTest.class, JMSQueueAppenderTest.class, JMSTopicAppenderTest.class })
 public class PackageTest {
 }
\ No newline at end of file

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	Wed Feb 25 19:15:06 2009
@@ -22,7 +22,7 @@
 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.spi.ILoggingEvent;
 import ch.qos.logback.classic.util.TeztConstants;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.Layout;
@@ -73,7 +73,7 @@
     // smtpAppender.start();
   }
 
-  private Layout<LoggingEvent> buildPatternLayout(LoggerContext lc) {
+  private Layout<ILoggingEvent> buildPatternLayout(LoggerContext lc) {
     PatternLayout layout = new PatternLayout();
     layout.setContext(lc);
     layout.setFileHeader(HEADER);
@@ -83,7 +83,7 @@
     return layout;
   }
 
-  private Layout<LoggingEvent> buildHTMLLayout(LoggerContext lc) {
+  private Layout<ILoggingEvent> buildHTMLLayout(LoggerContext lc) {
     HTMLLayout layout = new HTMLLayout();
     layout.setContext(lc);
     // layout.setFileHeader(HEADER);

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java	Wed Feb 25 19:15:06 2009
@@ -33,7 +33,7 @@
 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.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.Layout;
 import ch.qos.logback.core.util.StatusPrinter;
@@ -71,7 +71,7 @@
     smtpAppender.addTo("noreply at qos.ch");
   }
 
-  private Layout<LoggingEvent> buildPatternLayout(LoggerContext lc) {
+  private Layout<ILoggingEvent> buildPatternLayout(LoggerContext lc) {
     PatternLayout layout = new PatternLayout();
     layout.setContext(lc);
     layout.setFileHeader(HEADER);
@@ -81,7 +81,7 @@
     return layout;
   }
 
-  private Layout<LoggingEvent> buildHTMLLayout(LoggerContext lc) {
+  private Layout<ILoggingEvent> buildHTMLLayout(LoggerContext lc) {
     HTMLLayout layout = new HTMLLayout();
     layout.setContext(lc);
     // layout.setFileHeader(HEADER);

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketAppenderTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketAppenderTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketAppenderTest.java	Wed Feb 25 19:15:06 2009
@@ -23,7 +23,7 @@
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.spi.LoggerContextRemoteView;
 import ch.qos.logback.classic.spi.LoggerRemoteView;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.read.ListAppender;
 import ch.qos.logback.core.util.StatusPrinter;
 
@@ -36,7 +36,7 @@
   int port = 4561;
   LoggerContext lc = new LoggerContext();
   LoggerContext serverLC = new LoggerContext();
-  ListAppender<LoggingEvent> la = new ListAppender<LoggingEvent>();
+  ListAppender<ILoggingEvent> la = new ListAppender<ILoggingEvent>();
   SocketAppender socketAppender = new SocketAppender();
 
   private SimpleSocketServer simpleSocketServer;
@@ -66,7 +66,7 @@
     assertTrue(simpleSocketServer.isClosed());
     assertEquals(1, la.list.size());
 
-    LoggingEvent remoteEvent = la.list.get(0);
+    ILoggingEvent remoteEvent = la.list.get(0);
     assertEquals("test msg", remoteEvent.getMessage());
     assertEquals(Level.DEBUG, remoteEvent.getLevel());
   }
@@ -86,7 +86,7 @@
     assertTrue(simpleSocketServer.isClosed());
     assertEquals(1, la.list.size());
 
-    LoggingEvent remoteEvent = la.list.get(0);
+    ILoggingEvent remoteEvent = la.list.get(0);
 
     LoggerRemoteView loggerRemoteView = remoteEvent.getLoggerRemoteView();
     assertNotNull(loggerRemoteView);
@@ -115,10 +115,10 @@
     simpleSocketServer.close();
     simpleSocketServer.join(JOIN_OR_WAIT_TIMEOUT);
     assertTrue(simpleSocketServer.isClosed());
-    ListAppender<LoggingEvent> la = getListAppender();
+    ListAppender<ILoggingEvent> la = getListAppender();
     assertEquals(1, la.list.size());
 
-    LoggingEvent remoteEvent = la.list.get(0);
+    ILoggingEvent remoteEvent = la.list.get(0);
     Map<String, String> MDCPropertyMap = remoteEvent.getMDCPropertyMap();
     assertEquals("testValue", MDCPropertyMap.get("key"));
   }
@@ -142,7 +142,7 @@
     assertTrue(simpleSocketServer.isClosed());
     assertEquals(1, la.list.size());
 
-    LoggingEvent remoteEvent = la.list.get(0);
+    ILoggingEvent remoteEvent = la.list.get(0);
     assertEquals("testMarker", remoteEvent.getMarker().getName());
   }
 
@@ -165,13 +165,13 @@
     simpleSocketServer.close();
     simpleSocketServer.join(JOIN_OR_WAIT_TIMEOUT);
     assertTrue(simpleSocketServer.isClosed());
-    ListAppender<LoggingEvent> la = getListAppender();
+    ListAppender<ILoggingEvent> la = getListAppender();
 
     assertEquals(2, la.list.size());
 
     // We observe the second logging event. It should provide us with
     // the updated MDC property.
-    LoggingEvent remoteEvent = la.list.get(1);
+    ILoggingEvent remoteEvent = la.list.get(1);
     Map<String, String> MDCPropertyMap = remoteEvent.getMDCPropertyMap();
     assertEquals("updatedTestValue", MDCPropertyMap.get("key"));
   }
@@ -196,7 +196,7 @@
     assertTrue(simpleSocketServer.isClosed());
     assertEquals(1, la.list.size());
 
-    LoggingEvent remoteEvent = la.list.get(0);
+    ILoggingEvent remoteEvent = la.list.get(0);
     assertEquals("test msg 2", remoteEvent.getMessage());
     assertEquals(Level.DEBUG, remoteEvent.getLevel());
   }
@@ -218,9 +218,9 @@
     Thread.yield();
   }
 
-  ListAppender<LoggingEvent> getListAppender() {
+  ListAppender<ILoggingEvent> getListAppender() {
     Logger root = serverLC.getLogger("root");
-    return (ListAppender<LoggingEvent>) root.getAppender(LIST_APPENDER_NAME);
+    return (ListAppender<ILoggingEvent>) root.getAppender(LIST_APPENDER_NAME);
   }
 
   private void configureClient() {

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ConverterTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ConverterTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ConverterTest.java	Wed Feb 25 19:15:06 2009
@@ -25,6 +25,7 @@
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.TestConstants;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.net.SyslogConstants;
@@ -35,7 +36,7 @@
 
   LoggerContext lc = new LoggerContext();
   Logger logger = lc.getLogger(ConverterTest.class);
-  LoggingEvent le;
+  ILoggingEvent le;
   List<String> optionList = new ArrayList<String>();
 
   // The LoggingEvent is massaged with an FCQN of FormattingConverter. This
@@ -64,24 +65,24 @@
   @Test
   public void testLineOfCaller() {
     {
-      DynamicConverter<LoggingEvent> converter = new LineOfCallerConverter();
+      DynamicConverter<ILoggingEvent> converter = new LineOfCallerConverter();
       StringBuffer buf = new StringBuffer();
       converter.write(buf, le);
       // the number below should be the line number of the previous line
-      assertEquals("69", buf.toString());
+      assertEquals("70", buf.toString());
     }
   }
 
   @Test
   public void testLevel() {
     {
-      DynamicConverter<LoggingEvent> converter = new LevelConverter();
+      DynamicConverter<ILoggingEvent> converter = new LevelConverter();
       StringBuffer buf = new StringBuffer();
       converter.write(buf, le);
       assertEquals("INFO", buf.toString());
     }
     {
-      DynamicConverter<LoggingEvent> converter = new LevelConverter();
+      DynamicConverter<ILoggingEvent> converter = new LevelConverter();
       converter.setFormattingInfo(new FormatInfo(1, 1, true, false));
       StringBuffer buf = new StringBuffer();
       converter.write(buf, le);
@@ -91,7 +92,7 @@
 
   @Test
   public void testThread() {
-    DynamicConverter<LoggingEvent> converter = new ThreadConverter();
+    DynamicConverter<ILoggingEvent> converter = new ThreadConverter();
     StringBuffer buf = new StringBuffer();
     converter.write(buf, le);
     String regex = TestConstants.NAKED_MAIN_REGEX;
@@ -100,7 +101,7 @@
 
   @Test
   public void testMessage() {
-    DynamicConverter<LoggingEvent> converter = new MessageConverter();
+    DynamicConverter<ILoggingEvent> converter = new MessageConverter();
     StringBuffer buf = new StringBuffer();
     converter.write(buf, le);
     assertEquals("Some message", buf.toString());
@@ -108,7 +109,7 @@
 
   @Test
   public void testLineSeparator() {
-    DynamicConverter<LoggingEvent> converter = new LineSeparatorConverter();
+    DynamicConverter<ILoggingEvent> converter = new LineSeparatorConverter();
     StringBuffer buf = new StringBuffer();
     converter.write(buf, le);
     assertEquals(CoreConstants.LINE_SEPARATOR, buf.toString());
@@ -117,13 +118,13 @@
   @Test
   public void testException() {
     {
-      DynamicConverter<LoggingEvent> converter = new ThrowableProxyConverter();
+      DynamicConverter<ILoggingEvent> converter = new ThrowableProxyConverter();
       StringBuffer buf = new StringBuffer();
       converter.write(buf, le);
     }
 
     {
-      DynamicConverter<LoggingEvent> converter = new ThrowableProxyConverter();
+      DynamicConverter<ILoggingEvent> converter = new ThrowableProxyConverter();
       this.optionList.add("3");
       converter.setOptionList(this.optionList);
       StringBuffer buf = new StringBuffer();
@@ -151,7 +152,7 @@
     }
 
     {
-      DynamicConverter<LoggingEvent> converter = new LoggerConverter();
+      DynamicConverter<ILoggingEvent> converter = new LoggerConverter();
       this.optionList.clear();
       this.optionList.add("0");
       converter.setOptionList(this.optionList);
@@ -164,7 +165,7 @@
 
   @Test
   public void testClass() {
-    DynamicConverter<LoggingEvent> converter = new ClassOfCallerConverter();
+    DynamicConverter<ILoggingEvent> converter = new ClassOfCallerConverter();
     StringBuffer buf = new StringBuffer();
     converter.write(buf, le);
     assertEquals(this.getClass().getName(), buf.toString());
@@ -172,7 +173,7 @@
 
   @Test
   public void testMethodOfCaller() {
-    DynamicConverter<LoggingEvent> converter = new MethodOfCallerConverter();
+    DynamicConverter<ILoggingEvent> converter = new MethodOfCallerConverter();
     StringBuffer buf = new StringBuffer();
     converter.write(buf, le);
     assertEquals("testMethodOfCaller", buf.toString());
@@ -180,7 +181,7 @@
 
   @Test
   public void testFileOfCaller() {
-    DynamicConverter<LoggingEvent> converter = new FileOfCallerConverter();
+    DynamicConverter<ILoggingEvent> converter = new FileOfCallerConverter();
     StringBuffer buf = new StringBuffer();
     converter.write(buf, le);
     assertEquals("ConverterTest.java", buf.toString());
@@ -189,7 +190,7 @@
   @Test
   public void testCallerData() {
     {
-      DynamicConverter<LoggingEvent> converter = new CallerDataConverter();
+      DynamicConverter<ILoggingEvent> converter = new CallerDataConverter();
       converter.start();
 
       StringBuffer buf = new StringBuffer();
@@ -200,7 +201,7 @@
     }
 
     {
-      DynamicConverter<LoggingEvent> converter = new CallerDataConverter();
+      DynamicConverter<ILoggingEvent> converter = new CallerDataConverter();
       this.optionList.add("2");
       this.optionList.add("XXX");
       converter.setOptionList(this.optionList);
@@ -216,7 +217,7 @@
     }
 
     {
-      DynamicConverter<LoggingEvent> converter = new CallerDataConverter();
+      DynamicConverter<ILoggingEvent> converter = new CallerDataConverter();
       this.optionList.clear();
       this.optionList.add("2");
       this.optionList.add("XXX");
@@ -233,7 +234,7 @@
       }
     }
     {
-      DynamicConverter<LoggingEvent> converter = new CallerDataConverter();
+      DynamicConverter<ILoggingEvent> converter = new CallerDataConverter();
       this.optionList.clear();
       this.optionList.add("2");
       this.optionList.add("XXX");
@@ -251,7 +252,7 @@
     }
 
     {
-      DynamicConverter<LoggingEvent> converter = new CallerDataConverter();
+      DynamicConverter<ILoggingEvent> converter = new CallerDataConverter();
       this.optionList.clear();
       this.optionList.add("2");
       this.optionList.add("XXX");
@@ -271,29 +272,25 @@
 
   @Test
   public void testRelativeTime() throws Exception {
-    DynamicConverter<LoggingEvent> converter = new RelativeTimeConverter();
+    DynamicConverter<ILoggingEvent> converter = new RelativeTimeConverter();
     StringBuffer buf0 = new StringBuffer();
     StringBuffer buf1 = new StringBuffer();
-    LoggingEvent e0 = makeLoggingEvent(null);
-    LoggingEvent e1 = makeLoggingEvent(null);
+    ILoggingEvent e0 = makeLoggingEvent(null);
+    ILoggingEvent e1 = makeLoggingEvent(null);
     converter.write(buf0, e0);
     converter.write(buf1, e1);
     assertEquals(buf0.toString(), buf1.toString());
-    int rt0 = Integer.parseInt(buf0.toString());
-    if (rt0 < 50) {
-      fail("relative time should be > 50, but it is " + rt0);
-    }
   }
 
   @Test
   public void testSyslogStart() throws Exception {
-    DynamicConverter<LoggingEvent> converter = new SyslogStartConverter();
+    DynamicConverter<ILoggingEvent> converter = new SyslogStartConverter();
     this.optionList.clear();
     this.optionList.add("MAIL");
     converter.setOptionList(this.optionList);
     converter.start();
 
-    LoggingEvent event = makeLoggingEvent(null);
+    ILoggingEvent event = makeLoggingEvent(null);
 
     StringBuffer buf = new StringBuffer();
     converter.write(buf, event);
@@ -313,7 +310,7 @@
     converter.setOptionList(optionList);
     converter.start();
 
-    LoggingEvent event = makeLoggingEvent(null);
+    ILoggingEvent event = makeLoggingEvent(null);
 
     String result = converter.convert(event);
     assertEquals("someValue", result);
@@ -324,7 +321,7 @@
     ClassicConverter converter = new ContextNameConverter();
     converter.setContext(lc);
     lc.setName("aValue");
-    LoggingEvent event = makeLoggingEvent(null);
+    ILoggingEvent event = makeLoggingEvent(null);
 
     String result = converter.convert(event);
     assertEquals("aValue", result);

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverterTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverterTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverterTest.java	Wed Feb 25 19:15:06 2009
@@ -15,6 +15,7 @@
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 
 public class ExtendedThrowableProxyConverterTest {
@@ -34,8 +35,8 @@
   public void tearDown() throws Exception {
   }
 
-  private LoggingEvent createLoggingEvent(Throwable t) {
-    LoggingEvent le = new LoggingEvent(this.getClass().getName(), lc
+  private ILoggingEvent createLoggingEvent(Throwable t) {
+    ILoggingEvent le = new LoggingEvent(this.getClass().getName(), lc
         .getLogger(LoggerContext.ROOT_NAME), Level.DEBUG, "test message", t,
         null);
     return le;
@@ -47,7 +48,7 @@
     pl.setContext(lc);
     pl.setPattern("%m%n");
     pl.start();
-    LoggingEvent e = createLoggingEvent(new Exception("x"));
+    ILoggingEvent e = createLoggingEvent(new Exception("x"));
     String res = pl.doLayout(e);
 
     // make sure that at least some package data was output
@@ -75,7 +76,7 @@
   void verify(Throwable t) {
     t.printStackTrace(pw);
 
-    LoggingEvent le = createLoggingEvent(t);
+    ILoggingEvent le = createLoggingEvent(t);
     String result = etpc.convert(le);
     result = result.replace("common frames omitted", "more");
     result = result.replaceAll(" \\[.*\\]", "");

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MDCConverterTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MDCConverterTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MDCConverterTest.java	Wed Feb 25 19:15:06 2009
@@ -1,6 +1,6 @@
 package ch.qos.logback.classic.pattern;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
 import org.junit.After;
 import org.junit.Before;
@@ -9,6 +9,7 @@
 
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.util.SystemInfo;
 
@@ -35,7 +36,7 @@
   public void testConverWithOneEntry() {
     MDC.clear();
     MDC.put("testKey", "testValue");
-    LoggingEvent le = createLoggingEvent();
+    ILoggingEvent le = createLoggingEvent();
     String result = converter.convert(le);
     assertEquals("testKey=testValue", result);
   }
@@ -45,7 +46,7 @@
     MDC.clear();
     MDC.put("testKey", "testValue");
     MDC.put("testKey2", "testValue2");
-    LoggingEvent le = createLoggingEvent();
+    ILoggingEvent le = createLoggingEvent();
     String result = converter.convert(le);
     if (SystemInfo.getJavaVendor().contains("IBM")) {
       assertEquals("testKey2=testValue2, testKey=testValue", result);
@@ -54,8 +55,8 @@
     }
   }
 
-  private LoggingEvent createLoggingEvent() {
-    LoggingEvent le = new LoggingEvent(this.getClass().getName(), lc
+  private ILoggingEvent createLoggingEvent() {
+    ILoggingEvent le = new LoggingEvent(this.getClass().getName(), lc
         .getLogger(LoggerContext.ROOT_NAME), Level.DEBUG, "test message", null,
         null);
     return le;

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MarkerConverterTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MarkerConverterTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MarkerConverterTest.java	Wed Feb 25 19:15:06 2009
@@ -1,6 +1,6 @@
 package ch.qos.logback.classic.pattern;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
 import org.junit.After;
 import org.junit.Before;
@@ -11,6 +11,7 @@
 
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 
 public class MarkerConverterTest {
@@ -70,7 +71,7 @@
     assertEquals("testParent [ child1, child2, child3 ]", result);
   }
   
-  private LoggingEvent createLoggingEvent(Marker marker) {
+  private ILoggingEvent createLoggingEvent(Marker marker) {
     LoggingEvent le = new LoggingEvent(this.getClass().getName(), lc.getLogger(LoggerContext.ROOT_NAME),
         Level.DEBUG, "test message", null, null);
     le.setMarker(marker);

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ThrowableProxyConverterTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ThrowableProxyConverterTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ThrowableProxyConverterTest.java	Wed Feb 25 19:15:06 2009
@@ -11,6 +11,7 @@
 
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.classic.util.TeztHelper;
 
@@ -31,8 +32,8 @@
   public void tearDown() throws Exception {
   }
 
-  private LoggingEvent createLoggingEvent(Throwable t) {
-    LoggingEvent le = new LoggingEvent(this.getClass().getName(), lc
+  private ILoggingEvent createLoggingEvent(Throwable t) {
+    ILoggingEvent le = new LoggingEvent(this.getClass().getName(), lc
         .getLogger(LoggerContext.ROOT_NAME), Level.DEBUG, "test message", t,
         null);
     return le;
@@ -53,7 +54,7 @@
   void verify(Throwable t) {
     t.printStackTrace(pw);
 
-    LoggingEvent le = createLoggingEvent(t);
+    ILoggingEvent le = createLoggingEvent(t);
     String result = tpc.convert(le);
     System.out.println(result);
     result = result.replace("common frames omitted", "more");

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java	Wed Feb 25 19:15:06 2009
@@ -22,6 +22,7 @@
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.joran.JoranConfigurator;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.classic.util.TeztConstants;
 import ch.qos.logback.core.joran.spi.JoranException;
@@ -58,12 +59,12 @@
     logger.debug("smoke");
     long timestamp = 0;
     SiftingAppender ha = (SiftingAppender) root.getAppender("SIFT");
-    ListAppender<LoggingEvent> listAppender = (ListAppender<LoggingEvent>) ha
+    ListAppender<ILoggingEvent> listAppender = (ListAppender<ILoggingEvent>) ha
         .getAppenderTracker().get("smoke", timestamp);
 
     StatusPrinter.print(loggerContext);
     assertNotNull(listAppender);
-    List<LoggingEvent> eventList = listAppender.list;
+    List<ILoggingEvent> eventList = listAppender.list;
     assertEquals(1, listAppender.list.size());
     assertEquals("smoke", eventList.get(0).getMessage());
   }
@@ -74,7 +75,7 @@
     logger.debug("hello");
     long timestamp = 0;
     SiftingAppender ha = (SiftingAppender) root.getAppender("SIFT");
-    StringListAppender<LoggingEvent> listAppender = (StringListAppender<LoggingEvent>) ha
+    StringListAppender<ILoggingEvent> listAppender = (StringListAppender<ILoggingEvent>) ha
         .getAppenderTracker().get("default", timestamp);
 
     StatusPrinter.print(loggerContext);
@@ -92,12 +93,12 @@
     logger.debug("smoke");
     long timestamp = System.currentTimeMillis();
     SiftingAppender ha = (SiftingAppender) root.getAppender("SIFT");
-    ListAppender<LoggingEvent> listAppender = (ListAppender<LoggingEvent>) ha
+    ListAppender<ILoggingEvent> listAppender = (ListAppender<ILoggingEvent>) ha
         .getAppenderTracker().get("a", timestamp);
     StatusPrinter.print(loggerContext);
 
     assertNotNull(listAppender);
-    List<LoggingEvent> eventList = listAppender.list;
+    List<ILoggingEvent> eventList = listAppender.list;
     assertEquals(1, listAppender.list.size());
     assertEquals("smoke", eventList.get(0).getMessage());
 

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java	Wed Feb 25 19:15:06 2009
@@ -18,6 +18,16 @@
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.testUtil.Env;
 
+// As of logback 0.9.15, 
+//   average time  per logging event: 3979 nanoseconds
+//   size 545'648 bytes
+// 
+// Using LoggingEventDO
+// 
+//   average time  per logging event: 4052 nanoseconds
+//   size 544'086 bytes
+ 
+
 public class LoggingEventSerializationPerfTest {
 
   static int LOOP_LEN = 10 * 1000;
@@ -28,7 +38,6 @@
   @Before
   public void setUp() throws Exception {
     oos = new ObjectOutputStream(noos);
-   
   }
 
   @After
@@ -40,7 +49,10 @@
     int resetCounter = 0;
     for (int i = 0; i < loopLen; i++) {
       try {
-        oos.writeObject(builder.build(i));
+        ILoggingEvent le = (ILoggingEvent) builder.build(i);
+        //oos.writeObject(le);
+        oos.writeObject(LoggingEventSDO.build(le));
+
         oos.flush();
         if (++resetCounter >= CoreConstants.OOS_RESET_FREQUENCY) {
           oos.reset();
@@ -64,13 +76,19 @@
 
     doLoop(builder, LOOP_LEN);
     noos.reset();
-    double avg = doLoop(builder, LOOP_LEN);
+    double avg = doLoop(builder, LOOP_LEN);     noos.reset();
+    avg += doLoop(builder, LOOP_LEN);     noos.reset();
+    avg += doLoop(builder, LOOP_LEN);    noos.reset();
+
+    avg = avg/3;
 
+    System.out.println("avetage time per logging event "+avg+" nanoseconds");
+    System.out.println("noos size "+noos.size());
                          
     long actualSize = (long) (noos.size()/(1024*1.1d));
     double baosSizeLimit = 500;
 
-    assertTrue("baos size" + actualSize + " should be less than "
+    assertTrue("baos size " + actualSize + " should be less than "
         + baosSizeLimit, baosSizeLimit > actualSize);
 
     // the reference was computed on Orion (Ceki's computer)

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java	Wed Feb 25 19:15:06 2009
@@ -48,16 +48,16 @@
 
   @Test
   public void smoke() throws Exception {
-    LoggingEvent event = createLoggingEvent();
-    LoggingEvent remoteEvent = writeAndRead(event);
+    ILoggingEvent event = createLoggingEvent();
+    ILoggingEvent remoteEvent = writeAndRead(event);
     checkForEquality(event, remoteEvent);
   }
 
   @Test
   public void context() throws Exception {
     lc.putProperty("testKey", "testValue");
-    LoggingEvent event = createLoggingEvent();
-    LoggingEvent remoteEvent = writeAndRead(event);
+    ILoggingEvent event = createLoggingEvent();
+    ILoggingEvent remoteEvent = writeAndRead(event);
     checkForEquality(event, remoteEvent);
 
     LoggerRemoteView loggerRemoteView = remoteEvent.getLoggerRemoteView();
@@ -76,8 +76,8 @@
   @Test
   public void MDC() throws Exception {
     MDC.put("key", "testValue");
-    LoggingEvent event = createLoggingEvent();
-    LoggingEvent remoteEvent = writeAndRead(event);
+    ILoggingEvent event = createLoggingEvent();
+    ILoggingEvent remoteEvent = writeAndRead(event);
     checkForEquality(event, remoteEvent);
     Map<String, String> MDCPropertyMap = remoteEvent.getMDCPropertyMap();
     assertEquals("testValue", MDCPropertyMap.get("key"));
@@ -86,12 +86,12 @@
   @Test
   public void updatedMDC() throws Exception {
     MDC.put("key", "testValue");
-    LoggingEvent event1 = createLoggingEvent();
-    oos.writeObject(event1);
+    ILoggingEvent event1 = createLoggingEvent();
+    oos.writeObject(event1.getSDO());
 
     MDC.put("key", "updatedTestValue");
-    LoggingEvent event2 = createLoggingEvent();
-    oos.writeObject(event2);
+    ILoggingEvent event2 = createLoggingEvent();
+    oos.writeObject(event2.getSDO());
 
     // create the input stream based on the ouput stream
     ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
@@ -99,7 +99,7 @@
 
     // skip over one object
     inputStream.readObject();
-    LoggingEvent remoteEvent2 = (LoggingEvent) inputStream.readObject();
+    ILoggingEvent remoteEvent2 = (ILoggingEvent) inputStream.readObject();
 
     // We observe the second logging event. It should provide us with
     // the updated MDC property.
@@ -112,7 +112,7 @@
     LoggingEvent event = createLoggingEvent();
     LuckyCharms lucky0 = new LuckyCharms(0);
     event.setArgumentArray(new Object[] { lucky0, null });
-    LoggingEvent remoteEvent = writeAndRead(event);
+    ILoggingEvent remoteEvent = writeAndRead(event);
     checkForEquality(event, remoteEvent);
     
     Object[] aa = remoteEvent.getArgumentArray();
@@ -128,7 +128,7 @@
     Throwable throwable = new Throwable("just testing");
     ThrowableProxy tp = new ThrowableProxy(throwable);
     event.setThrowableProxy(tp);
-    LoggingEvent remoteEvent = writeAndRead(event);
+    ILoggingEvent remoteEvent = writeAndRead(event);
     checkForEquality(event, remoteEvent);
   }
 
@@ -140,7 +140,7 @@
     event.setThrowableProxy(tp);
     tp.calculatePackagingData();
 
-    LoggingEvent remoteEvent = writeAndRead(event);
+    ILoggingEvent remoteEvent = writeAndRead(event);
     checkForEquality(event, remoteEvent);
   }
   
@@ -159,7 +159,7 @@
     LoggingEvent event = createLoggingEvent();
     event.setArgumentArray(argArray);
     
-    LoggingEvent remoteEvent = writeAndRead(event);
+    ILoggingEvent remoteEvent = writeAndRead(event);
     checkForEquality(event, remoteEvent);
     Object[] aa = remoteEvent.getArgumentArray();
     assertNotNull(aa);
@@ -174,8 +174,8 @@
     return le;
   }
 
-  private void checkForEquality(LoggingEvent original,
-      LoggingEvent afterSerialization) {
+  private void checkForEquality(ILoggingEvent original,
+      ILoggingEvent afterSerialization) {
     assertEquals(original.getLevel(), afterSerialization.getLevel());
     assertEquals(original.getFormattedMessage(), afterSerialization
         .getFormattedMessage());
@@ -188,13 +188,13 @@
 
   }
 
-  private LoggingEvent writeAndRead(LoggingEvent event) throws IOException,
+  private ILoggingEvent writeAndRead(ILoggingEvent event) throws IOException,
       ClassNotFoundException {
-    oos.writeObject(event);
+    oos.writeObject(event.getSDO());
     ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
     inputStream = new ObjectInputStream(bis);
 
-    return (LoggingEvent) inputStream.readObject();
+    return (ILoggingEvent) inputStream.readObject();
   }
 
 }

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/testUtil/SampleConverter.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/testUtil/SampleConverter.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/testUtil/SampleConverter.java	Wed Feb 25 19:15:06 2009
@@ -10,14 +10,14 @@
 package ch.qos.logback.classic.testUtil;
 
 import ch.qos.logback.classic.pattern.ClassicConverter;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class SampleConverter extends ClassicConverter {
 
   static public final String SAMPLE_STR = "sample";
   
   @Override
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     return SAMPLE_STR;
   }
 

Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/util/LevelToSyslogSeverityTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/util/LevelToSyslogSeverityTest.java	(original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/util/LevelToSyslogSeverityTest.java	Wed Feb 25 19:15:06 2009
@@ -1,10 +1,11 @@
 package ch.qos.logback.classic.util;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
 import org.junit.Test;
 
 import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.net.SyslogConstants;
 
@@ -30,7 +31,7 @@
 
   }
 
-  LoggingEvent createEventOfLevel(Level level) {
+  ILoggingEvent createEventOfLevel(Level level) {
     LoggingEvent event = new LoggingEvent();
     event.setLevel(level);
     return event;

Modified: logback/trunk/logback-classic/src/test/java/org/dummy/DummyLBAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/org/dummy/DummyLBAppender.java	(original)
+++ logback/trunk/logback-classic/src/test/java/org/dummy/DummyLBAppender.java	Wed Feb 25 19:15:06 2009
@@ -13,12 +13,12 @@
 import java.util.List;
 
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.AppenderBase;
 
-public class DummyLBAppender extends AppenderBase<LoggingEvent> {
+public class DummyLBAppender extends AppenderBase<ILoggingEvent> {
 
-  public List<LoggingEvent> list = new ArrayList<LoggingEvent>();
+  public List<ILoggingEvent> list = new ArrayList<ILoggingEvent>();
   public List<String> stringList = new ArrayList<String>();
   
   PatternLayout layout;
@@ -31,7 +31,7 @@
     this.layout = layout;
   }
   
-  protected void append(LoggingEvent e) {
+  protected void append(ILoggingEvent e) {
     list.add(e);
     if(layout != null) {
       String s = layout.doLayout(e);

Modified: logback/trunk/logback-classic/src/test/java/org/dummy/Log4jInvocation.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/org/dummy/Log4jInvocation.java	(original)
+++ logback/trunk/logback-classic/src/test/java/org/dummy/Log4jInvocation.java	Wed Feb 25 19:15:06 2009
@@ -19,7 +19,7 @@
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 /**
  * Used to test log4j-over-slf4j
@@ -55,7 +55,7 @@
     logger.debug(HELLO);
 
     assertEquals(1, listAppender.list.size());
-    LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+    ILoggingEvent event = (ILoggingEvent) listAppender.list.get(0);
     assertEquals(HELLO, event.getMessage());
   }
 
@@ -77,7 +77,7 @@
     logger.trace(HELLO);
     assertEquals(1, listAppender.list.size());
 
-    LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+    ILoggingEvent event = (ILoggingEvent) listAppender.list.get(0);
     assertEquals(HELLO, event.getMessage());
 
     assertEquals(1, listAppender.stringList.size());

Modified: logback/trunk/logback-classic/src/test/java/org/slf4j/impl/RecursiveLBAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/org/slf4j/impl/RecursiveLBAppender.java	(original)
+++ logback/trunk/logback-classic/src/test/java/org/slf4j/impl/RecursiveLBAppender.java	Wed Feb 25 19:15:06 2009
@@ -17,12 +17,12 @@
 import org.slf4j.LoggerFactory;
 
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.AppenderBase;
 
-public class RecursiveLBAppender extends AppenderBase<LoggingEvent> {
+public class RecursiveLBAppender extends AppenderBase<ILoggingEvent> {
 
-  public List<LoggingEvent> list = new ArrayList<LoggingEvent>();
+  public List<ILoggingEvent> list = new ArrayList<ILoggingEvent>();
   public List<String> stringList = new ArrayList<String>();
   
   PatternLayout layout;
@@ -43,7 +43,7 @@
     super.start();
   }
   
-  protected void append(LoggingEvent e) {
+  protected void append(ILoggingEvent e) {
     list.add(e);
     if(layout != null) {
       String s = layout.doLayout(e);

Modified: logback/trunk/logback-core/pom.xml
==============================================================================
--- logback/trunk/logback-core/pom.xml	(original)
+++ logback/trunk/logback-core/pom.xml	Wed Feb 25 19:15:06 2009
@@ -65,7 +65,6 @@
       <scope>compile</scope>
       <optional>true</optional>
     </dependency>
-
   </dependencies>
 
 

Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Context.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Context.java	(original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Context.java	Wed Feb 25 19:15:06 2009
@@ -74,4 +74,12 @@
    * @param name
    */
   public void setName(String name);
+  
+  /**
+   * The time at which this context was created, expressed in
+   * millisecond elapsed since the epoch (1.1.1970).
+   * 
+   * @return The time as measured when this class was created.
+   */
+  public long getBithTime();
 }

Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java	(original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java	Wed Feb 25 19:15:06 2009
@@ -16,6 +16,8 @@
 
 public class ContextBase implements Context {
 
+  private long birthTime = System.currentTimeMillis();
+  
   private String name;
   private StatusManager sm = new BasicStatusManager();
   // TODO propertyMap should be observable so that we can be notified
@@ -90,4 +92,8 @@
       throw new IllegalStateException("Context has been already given a name");
     }
   }
+
+  public long getBithTime() {
+    return birthTime;
+  }
 }

Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java	(original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java	Wed Feb 25 19:15:06 2009
@@ -18,6 +18,7 @@
 
 import ch.qos.logback.core.AppenderBase;
 import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.spi.SDOAware;
 
 /**
  * 
@@ -151,7 +152,12 @@
     if (oos != null) {
       try {
         postProcessEvent(event);
-        oos.writeObject(event);
+        // if an object is SDOAware, then its SDO has preference
+        if(event instanceof SDOAware) {
+          oos.writeObject(((SDOAware)event).getSDO());
+        } else {
+          oos.writeObject(event);
+        }
         // addInfo("=========Flushing.");
         oos.flush();
         if (++counter >= CoreConstants.OOS_RESET_FREQUENCY) {

Added: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/SDOAware.java
==============================================================================
--- (empty file)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/SDOAware.java	Wed Feb 25 19:15:06 2009
@@ -0,0 +1,21 @@
+package ch.qos.logback.core.spi;
+
+import java.io.Serializable;
+
+/**
+ * 
+ * SDOAware objects can return SDO substitutes of themselves. SDO stands for
+ * Serializable Data Object which are usually read-only versions of the objects
+ * they substitute for.
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * 
+ */
+public interface SDOAware {
+  /**
+   * Return an SDO (Serializable Data Object) of this instance.
+   * 
+   * @return an SDO
+   */
+  Serializable getSDO();
+}

Modified: logback/trunk/logback-examples/src/main/java/chapter11/TrivialLogbackAppender.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter11/TrivialLogbackAppender.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter11/TrivialLogbackAppender.java	Wed Feb 25 19:15:06 2009
@@ -9,10 +9,10 @@
  */
 package chapter11;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.AppenderBase;
 
-public class TrivialLogbackAppender extends AppenderBase<LoggingEvent> {
+public class TrivialLogbackAppender extends AppenderBase<ILoggingEvent> {
 
   @Override
   public void start() {
@@ -24,7 +24,7 @@
   }
 
   @Override
-  protected void append(LoggingEvent loggingevent) {
+  protected void append(ILoggingEvent loggingevent) {
     // note that AppenderBase.doAppend will invoke this method only if
     // this appender was successfully started.
     

Modified: logback/trunk/logback-examples/src/main/java/chapter11/TrivialLogbackLayout.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter11/TrivialLogbackLayout.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter11/TrivialLogbackLayout.java	Wed Feb 25 19:15:06 2009
@@ -9,7 +9,7 @@
  */
 package chapter11;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.LayoutBase;
 
 
@@ -21,9 +21,9 @@
  * @author Ceki G&uuml;lc&uuml;
  *
  */
-public class TrivialLogbackLayout extends LayoutBase<LoggingEvent> {
+public class TrivialLogbackLayout extends LayoutBase<ILoggingEvent> {
 
-  public String doLayout(LoggingEvent loggingEvent) {
+  public String doLayout(ILoggingEvent loggingEvent) {
     return loggingEvent.getMessage();
   }
 }

Modified: logback/trunk/logback-examples/src/main/java/chapter4/CountingConsoleAppender.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/CountingConsoleAppender.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/CountingConsoleAppender.java	Wed Feb 25 19:15:06 2009
@@ -10,11 +10,11 @@
 
 package chapter4;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.AppenderBase;
 
 
-public class CountingConsoleAppender extends AppenderBase<LoggingEvent> {
+public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
   static int DEFAULT_LIMIT = 10;
   int counter = 0;
   int limit = DEFAULT_LIMIT;
@@ -40,7 +40,7 @@
     super.start();
   }
 
-  public void append(LoggingEvent event) {
+  public void append(ILoggingEvent event) {
     if (counter >= limit) {
       return;
     }

Modified: logback/trunk/logback-examples/src/main/java/chapter4/ExitWoes1.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/ExitWoes1.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/ExitWoes1.java	Wed Feb 25 19:15:06 2009
@@ -17,7 +17,7 @@
 
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.WriterAppender;
 import ch.qos.logback.core.layout.EchoLayout;
 
@@ -26,9 +26,9 @@
   public static void main(String[] args) throws Exception {
     LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
     lc.reset(); // we want to override the default-config.
-    WriterAppender<LoggingEvent> writerAppender = new WriterAppender<LoggingEvent>();
+    WriterAppender<ILoggingEvent> writerAppender = new WriterAppender<ILoggingEvent>();
     writerAppender.setContext(lc);
-    writerAppender.setLayout(new EchoLayout<LoggingEvent>());
+    writerAppender.setLayout(new EchoLayout<ILoggingEvent>());
 
     OutputStream os = new FileOutputStream("exitWoes1.log");
     writerAppender.setWriter(new OutputStreamWriter(os));

Modified: logback/trunk/logback-examples/src/main/java/chapter4/ExitWoes2.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/ExitWoes2.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/ExitWoes2.java	Wed Feb 25 19:15:06 2009
@@ -17,7 +17,7 @@
 
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.WriterAppender;
 import ch.qos.logback.core.layout.EchoLayout;
 import ch.qos.logback.core.util.StatusPrinter;
@@ -27,9 +27,9 @@
   public static void main(String[] args) throws Exception {
     LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
     lc.reset();//this is to cancel default-config.
-    WriterAppender<LoggingEvent> writerAppender = new WriterAppender<LoggingEvent>();
+    WriterAppender<ILoggingEvent> writerAppender = new WriterAppender<ILoggingEvent>();
     writerAppender.setContext(lc);
-    writerAppender.setLayout(new EchoLayout<LoggingEvent>());
+    writerAppender.setLayout(new EchoLayout<ILoggingEvent>());
 
     OutputStream os = new FileOutputStream("exitWoes2.log");
     writerAppender.setWriter(new OutputStreamWriter(os));

Modified: logback/trunk/logback-examples/src/main/java/chapter4/IO.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter4/IO.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter4/IO.java	Wed Feb 25 19:15:06 2009
@@ -14,7 +14,7 @@
 
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.FileAppender;
 import ch.qos.logback.core.layout.EchoLayout;
 
@@ -41,14 +41,14 @@
 
     // A FileAppender is created according to the buffering and
     // immediate flush setting of this IO instance.
-    FileAppender<LoggingEvent> fa = new FileAppender<LoggingEvent>();
+    FileAppender<ILoggingEvent> fa = new FileAppender<ILoggingEvent>();
 
     if (longMessage) {
       PatternLayout pa = new PatternLayout();
       pa.setPattern("%r %5p %c [%t] - %m%n");
       fa.setLayout(pa);
     } else {
-      fa.setLayout(new EchoLayout<LoggingEvent>());
+      fa.setLayout(new EchoLayout<ILoggingEvent>());
     }
 
     fa.setFile(getName() + ".log");

Modified: logback/trunk/logback-examples/src/main/java/chapter5/MySampleConverter.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter5/MySampleConverter.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter5/MySampleConverter.java	Wed Feb 25 19:15:06 2009
@@ -2,7 +2,7 @@
 
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.pattern.ClassicConverter;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class MySampleConverter extends ClassicConverter {
 
@@ -12,7 +12,7 @@
   private static final String WARN_COLOR = "\u001b[0;33m";
 
   @Override
-  public String convert(LoggingEvent event) {
+  public String convert(ILoggingEvent event) {
     StringBuffer sbuf = new StringBuffer();
     sbuf.append(getColor(event.getLevel()));
     sbuf.append(event.getLevel());

Modified: logback/trunk/logback-examples/src/main/java/chapter5/MySampleLayout.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter5/MySampleLayout.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter5/MySampleLayout.java	Wed Feb 25 19:15:06 2009
@@ -1,14 +1,14 @@
 package chapter5;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.LayoutBase;
 
-public class MySampleLayout extends LayoutBase<LoggingEvent>  {
+public class MySampleLayout extends LayoutBase<ILoggingEvent>  {
 
-  public String doLayout(LoggingEvent event) {
+  public String doLayout(ILoggingEvent event) {
     StringBuffer sbuf = new StringBuffer(128);
-    sbuf.append(event.getTimeStamp() - LoggingEvent.getStartTime());
+    sbuf.append(event.getTimeStamp() - event.getContextBirthTime());
     sbuf.append(" ");
     sbuf.append(event.getLevel());
     sbuf.append(" [");

Modified: logback/trunk/logback-examples/src/main/java/chapter5/MySampleLayout2.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter5/MySampleLayout2.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter5/MySampleLayout2.java	Wed Feb 25 19:15:06 2009
@@ -1,10 +1,10 @@
 package chapter5;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.LayoutBase;
 
-public class MySampleLayout2 extends LayoutBase<LoggingEvent> {
+public class MySampleLayout2 extends LayoutBase<ILoggingEvent> {
 
   String prefix = null;
   boolean printThreadName = true;
@@ -17,12 +17,12 @@
     this.printThreadName = printThreadName;
   }
 
-  public String doLayout(LoggingEvent event) {
+  public String doLayout(ILoggingEvent event) {
     StringBuffer sbuf = new StringBuffer(128);
     if (prefix != null) {
       sbuf.append(prefix + ": ");
     }
-    sbuf.append(event.getTimeStamp() - LoggingEvent.getStartTime());
+    sbuf.append(event.getTimeStamp() - event.getContextBirthTime());
     sbuf.append(" ");
     sbuf.append(event.getLevel());
     if (printThreadName) {

Modified: logback/trunk/logback-examples/src/main/java/chapter5/PatternSample.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter5/PatternSample.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter5/PatternSample.java	Wed Feb 25 19:15:06 2009
@@ -4,7 +4,7 @@
 
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.PatternLayout;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.ConsoleAppender;
 
 public class PatternSample {
@@ -16,7 +16,7 @@
     layout.setPattern("%-5level [%thread]: %message%n");
     layout.start();
     
-    ConsoleAppender<LoggingEvent> appender = new ConsoleAppender<LoggingEvent>();
+    ConsoleAppender<ILoggingEvent> appender = new ConsoleAppender<ILoggingEvent>();
     appender.setContext(rootLogger.getLoggerContext());
     appender.setLayout(layout);
     appender.start();

Modified: logback/trunk/logback-examples/src/main/java/chapter6/SampleFilter.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter6/SampleFilter.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter6/SampleFilter.java	Wed Feb 25 19:15:06 2009
@@ -1,6 +1,6 @@
 package chapter6;
 
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.filter.Filter;
 import ch.qos.logback.core.spi.FilterReply;
 
@@ -8,7 +8,7 @@
 
   @Override
   public FilterReply decide(Object eventObject) {
-    LoggingEvent event = (LoggingEvent)eventObject;
+    ILoggingEvent event = (ILoggingEvent)eventObject;
     if (event.getMessage() != null && event.getMessage().contains("sample")) {
       return FilterReply.ACCEPT;
     } else {

Modified: logback/trunk/logback-examples/src/main/java/chapter7/SimpleMDC.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter7/SimpleMDC.java	(original)
+++ logback/trunk/logback-examples/src/main/java/chapter7/SimpleMDC.java	Wed Feb 25 19:15:06 2009
@@ -19,7 +19,7 @@
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
 import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.ConsoleAppender;
 import ch.qos.logback.core.joran.spi.JoranException;
 import ch.qos.logback.core.util.Loader;
@@ -64,7 +64,7 @@
     layout.setContext(loggerContext);
     layout.setPattern("%X{first} %X{last} - %m%n");
     layout.start();
-    ConsoleAppender<LoggingEvent> appender = new ConsoleAppender<LoggingEvent>();
+    ConsoleAppender<ILoggingEvent> appender = new ConsoleAppender<ILoggingEvent>();
     appender.setContext(loggerContext);
     appender.setLayout(layout);
     appender.start();

Modified: logback/trunk/logback-site/src/site/pages/news.html
==============================================================================
--- logback/trunk/logback-site/src/site/pages/news.html	(original)
+++ logback/trunk/logback-site/src/site/pages/news.html	Wed Feb 25 19:15:06 2009
@@ -29,6 +29,19 @@
 
     <hr width="80%" align="center" />
 
+    <h3>Nth of April 2009 - Release of version 0.9.16</h3>
+
+    <p>Fixed a bug in the localLevelReset() method in the
+    <code>Logger</code> class whcih inadvertently used the DEBUG_INT
+    value in the org.slf4j.spi.LocationAwareLogger interface instead
+    of the DEBUG_INT value in ch.qos.logback.classic.Level class. The
+    issue was first identified by Andy Ruch <a
+    href="http://qos.ch/pipermail/logback-user/2009-February/000955.html">in
+    a message</a> to the logback-user list
+    </p>
+
+    <hr width="80%" align="center" />
+
     <h3>12th of February 2009 - Release of version 0.9.15</h3>
 
     <p>When the reset() method in <code>LoggerContext</code> is


More information about the logback-dev mailing list