logging-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rgo...@apache.org
Subject svn commit: r1482707 - in /logging/log4j/log4j2/trunk: ./ core/src/main/java/org/apache/logging/log4j/core/appender/ core/src/main/java/org/apache/logging/log4j/core/appender/rolling/ core/src/main/java/org/apache/logging/log4j/core/net/ core/src/test/...
Date Wed, 15 May 2013 07:32:10 GMT
Author: rgoers
Date: Wed May 15 07:32:09 2013
New Revision: 1482707

URL: http://svn.apache.org/r1482707
Log:
LOG4J2-254 - Mark OutputStream in OutputStreamManager as volatile. Mark header and footer as final.

Modified:
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
    logging/log4j/log4j2/trunk/pom.xml
    logging/log4j/log4j2/trunk/src/changes/changes.xml

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java Wed May 15 07:32:09 2013
@@ -59,10 +59,6 @@ public abstract class AbstractOutputStre
                                            final boolean handleException, final boolean immediateFlush,
                                            final OutputStreamManager manager) {
         super(name, filter, layout, handleException);
-        if (layout != null) {
-            manager.setHeader(layout.getHeader());
-            manager.setFooter(layout.getFooter());
-        }
         this.manager = manager;
         this.immediateFlush = immediateFlush;
     }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java Wed May 15 07:32:09 2013
@@ -95,13 +95,13 @@ public final class ConsoleAppender<T ext
         final boolean isFollow = follow == null ? false : Boolean.valueOf(follow);
         final boolean handleExceptions = suppress == null ? true : Boolean.valueOf(suppress);
         final Target target = t == null ? Target.SYSTEM_OUT : Target.valueOf(t);
-        return new ConsoleAppender<S>(name, layout, filter, getManager(isFollow, target), handleExceptions);
+        return new ConsoleAppender<S>(name, layout, filter, getManager(isFollow, target, layout), handleExceptions);
     }
 
-    private static OutputStreamManager getManager(final boolean follow, final Target target) {
+    private static OutputStreamManager getManager(final boolean follow, final Target target, final Layout layout) {
         final String type = target.name();
         final OutputStream os = getOutputStream(follow, target);
-        return OutputStreamManager.getManager(target.name() + "." + follow, new FactoryData(os, type), factory);
+        return OutputStreamManager.getManager(target.name() + "." + follow, new FactoryData(os, type, layout), factory);
     }
 
     private static OutputStream getOutputStream(final boolean follow, final Target target) {
@@ -212,15 +212,17 @@ public final class ConsoleAppender<T ext
     private static class FactoryData {
         private final OutputStream os;
         private final String type;
+        private final Layout layout;
 
         /**
          * Constructor.
          * @param os The OutputStream.
          * @param type The name of the target.
          */
-        public FactoryData(final OutputStream os, final String type) {
+        public FactoryData(final OutputStream os, final String type, final Layout layout) {
             this.os = os;
             this.type = type;
+            this.layout = layout;
         }
     }
 
@@ -237,7 +239,7 @@ public final class ConsoleAppender<T ext
          */
         @Override
         public OutputStreamManager createManager(final String name, final FactoryData data) {
-            return new OutputStreamManager(data.os, data.type);
+            return new OutputStreamManager(data.os, data.type, data.layout);
         }
     }
 

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java Wed May 15 07:32:09 2013
@@ -147,17 +147,16 @@ public final class FastFileAppender<T ex
                     + name);
             return null;
         }
-
-        FastFileManager manager = FastFileManager.getFileManager(fileName,
-                isAppend, isFlush, advertiseURI);
-        if (manager == null) {
-            return null;
-        }
         if (layout == null) {
             @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
             Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null, null);
             layout = l;
         }
+        FastFileManager manager = FastFileManager.getFileManager(fileName, isAppend, isFlush, advertiseURI, layout);
+        if (manager == null) {
+            return null;
+        }
+
         return new FastFileAppender<S>(name, layout, filter, manager, fileName,
                 handleExceptions, isFlush, isAdvertise ? config.getAdvertiser()
                         : null);

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileManager.java Wed May 15 07:32:09 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.logging.log4j.core.appender;
 
+import org.apache.logging.log4j.core.Layout;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -40,9 +42,10 @@ public class FastFileManager extends Out
     private final ByteBuffer buffer;
     private ThreadLocal<Boolean> isEndOfBatch = new ThreadLocal<Boolean>();
 
-    protected FastFileManager(RandomAccessFile file, String fileName,
-            OutputStream os, boolean immediateFlush, String advertiseURI) {
-        super(os, fileName);
+    protected FastFileManager(final RandomAccessFile file, final String fileName,
+            final OutputStream os, final boolean immediateFlush, final String advertiseURI,
+            final Layout layout) {
+        super(os, fileName, layout);
         this.isImmediateFlush = immediateFlush;
         this.randomAccessFile = file;
         this.advertiseURI = advertiseURI;
@@ -54,19 +57,18 @@ public class FastFileManager extends Out
 
     /**
      * Returns the FastFileManager.
-     * 
+     *
      * @param fileName The name of the file to manage.
-     * @param append true if the file should be appended to, false if it should
-     *            be overwritten.
-     * @param isFlush true if the contents should be flushed to disk on every
-     *            write
+     * @param append true if the file should be appended to, false if it should be overwritten.
+     * @param isFlush true if the contents should be flushed to disk on every write
      * @param advertiseURI the URI to use when advertising the file
+     * @param layout The layout.
      * @return A FastFileManager for the File.
      */
-    public static FastFileManager getFileManager(String fileName,
-            boolean append, boolean isFlush, String advertiseURI) {
-        return (FastFileManager) getManager(fileName, new FactoryData(append,
-                isFlush, advertiseURI), FACTORY);
+    public static FastFileManager getFileManager(final String fileName, final boolean append,
+                                                 final boolean isFlush, final String advertiseURI,
+                                                 final Layout layout) {
+        return (FastFileManager) getManager(fileName, new FactoryData(append, isFlush, advertiseURI, layout), FACTORY);
     }
 
     public Boolean isEndOfBatch() {
@@ -115,7 +117,7 @@ public class FastFileManager extends Out
 
     /**
      * Returns the name of the File being managed.
-     * 
+     *
      * @return The name of the File being managed.
      */
     public String getFileName() {
@@ -137,7 +139,7 @@ public class FastFileManager extends Out
      * FileManager's content format is specified by:
      * <p/>
      * Key: "fileURI" Value: provided "advertiseURI" param.
-     * 
+     *
      * @return Map of content format keys supporting FileManager
      */
     @Override
@@ -155,29 +157,30 @@ public class FastFileManager extends Out
         private final boolean append;
         private final boolean immediateFlush;
         private final String advertiseURI;
+        private final Layout layout;
 
         /**
          * Constructor.
-         * 
+         *
          * @param append Append status.
          */
-        public FactoryData(boolean append, boolean immediateFlush,
-                String advertiseURI) {
+        public FactoryData(final boolean append, final boolean immediateFlush, final String advertiseURI,
+                           final Layout layout) {
             this.append = append;
             this.immediateFlush = immediateFlush;
             this.advertiseURI = advertiseURI;
+            this.layout = layout;
         }
     }
 
     /**
      * Factory to create a FastFileManager.
      */
-    private static class FastFileManagerFactory implements
-            ManagerFactory<FastFileManager, FactoryData> {
+    private static class FastFileManagerFactory implements ManagerFactory<FastFileManager, FactoryData> {
 
         /**
          * Create a FastFileManager.
-         * 
+         *
          * @param name The name of the File.
          * @param data The FactoryData
          * @return The FastFileManager for the File.
@@ -197,8 +200,7 @@ public class FastFileManager extends Out
             RandomAccessFile raf;
             try {
                 raf = new RandomAccessFile(name, "rw");
-                return new FastFileManager(raf, name, os, data.immediateFlush,
-                        data.advertiseURI);
+                return new FastFileManager(raf, name, os, data.immediateFlush, data.advertiseURI, data.layout);
             } catch (Exception ex) {
                 LOGGER.error("FastFileManager (" + name + ") " + ex);
             }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java Wed May 15 07:32:09 2013
@@ -190,19 +190,19 @@ public final class FastRollingFileAppend
                     "true", config);
         }
 
-        final FastRollingFileManager manager = FastRollingFileManager
-                .getFastRollingFileManager(fileName, filePattern, isAppend,
-                        isFlush, policy, strategy, advertiseURI);
-        if (manager == null) {
-            return null;
-        }
-
         if (layout == null) {
             @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
             Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null, null);
             layout = l;
         }
 
+
+        final FastRollingFileManager manager = FastRollingFileManager.getFastRollingFileManager(fileName, filePattern,
+            isAppend, isFlush, policy, strategy, advertiseURI, layout);
+        if (manager == null) {
+            return null;
+        }
+
         return new FastRollingFileAppender<S>(name, layout, filter, manager,
                 fileName, filePattern, handleExceptions, isFlush,
                 isAdvertise ? config.getAdvertiser() : null);

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java Wed May 15 07:32:09 2013
@@ -129,17 +129,19 @@ public final class FileAppender<T extend
             LOGGER.error("No filename provided for FileAppender with name "  + name);
             return null;
         }
-
-        final FileManager manager = FileManager.getFileManager(fileName, isAppend, isLocking, isBuffered, advertiseURI);
-        if (manager == null) {
-            return null;
-        }
         if (layout == null) {
             @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
             Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null, null);
             layout = l;
         }
 
+        final FileManager manager = FileManager.getFileManager(fileName, isAppend, isLocking, isBuffered, advertiseURI,
+            layout);
+        if (manager == null) {
+            return null;
+        }
+
+
         return new FileAppender<S>(name, layout, filter, manager, fileName, handleExceptions, isFlush,
                 isAdvertise ? config.getAdvertiser() : null);
     }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java Wed May 15 07:32:09 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.logging.log4j.core.appender;
 
+import org.apache.logging.log4j.core.Layout;
+
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -39,8 +41,9 @@ public class FileManager extends OutputS
     private final boolean isLocking;
     private final String advertiseURI;
 
-    protected FileManager(final String fileName, final OutputStream os, final boolean append, final boolean locking, String advertiseURI) {
-        super(os, fileName);
+    protected FileManager(final String fileName, final OutputStream os, final boolean append, final boolean locking,
+                          final String advertiseURI, final Layout layout) {
+        super(os, fileName, layout);
         this.isAppend = append;
         this.isLocking = locking;
         this.advertiseURI = advertiseURI;
@@ -56,12 +59,14 @@ public class FileManager extends OutputS
      * @return A FileManager for the File.
      */
     public static FileManager getFileManager(final String fileName, final boolean append, boolean locking,
-                                             final boolean bufferedIO, String advertiseURI) {
+                                             final boolean bufferedIO, final String advertiseURI,
+                                             final Layout layout) {
 
         if (locking && bufferedIO) {
             locking = false;
         }
-        return (FileManager) getManager(fileName, new FactoryData(append, locking, bufferedIO, advertiseURI), FACTORY);
+        return (FileManager) getManager(fileName, new FactoryData(append, locking, bufferedIO, advertiseURI, layout),
+            FACTORY);
     }
 
     @Override
@@ -137,6 +142,7 @@ public class FileManager extends OutputS
         private final boolean locking;
         private final boolean bufferedIO;
         private final String advertiseURI;
+        private final Layout layout;
 
         /**
          * Constructor.
@@ -145,11 +151,13 @@ public class FileManager extends OutputS
          * @param bufferedIO Buffering flag.
          * @param advertiseURI the URI to use when advertising the file
          */
-        public FactoryData(final boolean append, final boolean locking, final boolean bufferedIO, String advertiseURI) {
+        public FactoryData(final boolean append, final boolean locking, final boolean bufferedIO,
+                           final String advertiseURI, final Layout layout) {
             this.append = append;
             this.locking = locking;
             this.bufferedIO = bufferedIO;
             this.advertiseURI = advertiseURI;
+            this.layout = layout;
         }
     }
 
@@ -178,7 +186,7 @@ public class FileManager extends OutputS
                 if (data.bufferedIO) {
                     os = new BufferedOutputStream(os);
                 }
-                return new FileManager(name, os, data.append, data.locking, data.advertiseURI);
+                return new FileManager(name, os, data.append, data.locking, data.advertiseURI, data.layout);
             } catch (final FileNotFoundException ex) {
                 LOGGER.error("FileManager (" + name + ") " + ex);
             }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java Wed May 15 07:32:09 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.logging.log4j.core.appender;
 
+import org.apache.logging.log4j.core.Layout;
+
 import java.io.IOException;
 import java.io.OutputStream;
 
@@ -25,14 +27,28 @@ import java.io.OutputStream;
  */
 public class OutputStreamManager extends AbstractManager {
 
-    private OutputStream os;
+    private volatile OutputStream os;
 
-    private byte[] footer = null;
-    private byte[] header = null;
+    private final byte[] footer;
+    private final byte[] header;
 
-    protected OutputStreamManager(final OutputStream os, final String streamName) {
+    protected OutputStreamManager(final OutputStream os, final String streamName, final Layout layout) {
         super(streamName);
         this.os = os;
+        if (layout != null) {
+            this.footer = layout.getFooter();
+            this.header = layout.getHeader();
+            if (this.header != null) {
+                try {
+                    this.os.write(header, 0, header.length);
+                } catch (final IOException ioe) {
+                    LOGGER.error("Unable to write header", ioe);
+                }
+            }
+        } else {
+            this.footer = null;
+            this.header = null;
+        }
     }
 
     /**
@@ -50,31 +66,6 @@ public class OutputStreamManager extends
     }
 
     /**
-     * Set the header to write when the stream is opened.
-     * @param header The header.
-     */
-    public synchronized void setHeader(final byte[] header) {
-        if (header != null) {
-            this.header = header;
-            try {
-                this.os.write(header, 0, header.length);
-            } catch (final IOException ioe) {
-                LOGGER.error("Unable to write header", ioe);
-            }
-        }
-    }
-
-    /**
-     * Set the footer to write when the stream is closed.
-     * @param footer The footer.
-     */
-    public synchronized void setFooter(final byte[] footer) {
-        if (footer != null) {
-            this.footer = footer;
-        }
-    }
-
-    /**
      * Default hook to write footer during close.
      */
     @Override

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java Wed May 15 07:32:09 2013
@@ -166,18 +166,18 @@ public final class RollingFileAppender<T
             strategy = DefaultRolloverStrategy.createStrategy(null, null, "true", config);
         }
 
-        final RollingFileManager manager = RollingFileManager.getFileManager(fileName, filePattern, isAppend,
-            isBuffered, policy, strategy, advertiseURI);
-        if (manager == null) {
-            return null;
-        }
-
         if (layout == null) {
             @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
             Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null, null);
             layout = l;
         }
 
+        final RollingFileManager manager = RollingFileManager.getFileManager(fileName, filePattern, isAppend,
+            isBuffered, policy, strategy, advertiseURI, layout);
+        if (manager == null) {
+            return null;
+        }
+
         return new RollingFileAppender<S>(name, layout, filter, manager, fileName, filePattern,
             handleExceptions, isFlush, isAdvertise ? config.getAdvertiser() : null);
     }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java Wed May 15 07:32:09 2013
@@ -117,7 +117,7 @@ public class SocketAppender<T extends Se
 
         final String prot = protocol != null ? protocol : Protocol.TCP.name();
 
-        final AbstractSocketManager manager = createSocketManager(prot, host, port, reconnectDelay, fail);
+        final AbstractSocketManager manager = createSocketManager(prot, host, port, reconnectDelay, fail, layout);
         if (manager == null) {
             return null;
         }
@@ -127,13 +127,14 @@ public class SocketAppender<T extends Se
     }
 
     protected static AbstractSocketManager createSocketManager(final String protocol, final String host, final int port,
-                                                               final int delay, final boolean immediateFail) {
+                                                               final int delay, final boolean immediateFail,
+                                                               final Layout layout) {
         final Protocol p = EnglishEnums.valueOf(Protocol.class, protocol);
         switch (p) {
             case TCP:
-                return TCPSocketManager.getSocketManager(host, port, delay, immediateFail);
+                return TCPSocketManager.getSocketManager(host, port, delay, immediateFail, layout);
             case UDP:
-                return DatagramSocketManager.getSocketManager(host, port);
+                return DatagramSocketManager.getSocketManager(host, port, layout);
             default:
                 return null;
         }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java Wed May 15 07:32:09 2013
@@ -130,7 +130,7 @@ public class SyslogAppender<T extends Se
             return null;
         }
         final String prot = protocol != null ? protocol : Protocol.UDP.name();
-        final AbstractSocketManager manager = createSocketManager(prot, host, port, reconnectDelay, fail);
+        final AbstractSocketManager manager = createSocketManager(prot, host, port, reconnectDelay, fail, layout);
         if (manager == null) {
             return null;
         }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FastRollingFileManager.java Wed May 15 07:32:09 2013
@@ -23,6 +23,7 @@ import java.io.OutputStream;
 import java.io.RandomAccessFile;
 import java.nio.ByteBuffer;
 
+import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.appender.AppenderRuntimeException;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
 
@@ -41,13 +42,12 @@ public class FastRollingFileManager exte
     private final ByteBuffer buffer;
     private ThreadLocal<Boolean> isEndOfBatch = new ThreadLocal<Boolean>();
 
-    public FastRollingFileManager(RandomAccessFile raf, String fileName,
-            String pattern, OutputStream os, boolean append,
-            boolean immediateFlush, long size, long time,
-            TriggeringPolicy policy, RolloverStrategy strategy,
-            String advertiseURI) {
-        super(fileName, pattern, os, append, size, time, policy, strategy,
-                advertiseURI);
+    public FastRollingFileManager(final RandomAccessFile raf, final String fileName,
+            final String pattern, final OutputStream os, final boolean append,
+            final boolean immediateFlush, final long size, final long time,
+            final TriggeringPolicy policy, final RolloverStrategy strategy,
+            final String advertiseURI, final Layout layout) {
+        super(fileName, pattern, os, append, size, time, policy, strategy, advertiseURI, layout);
         this.isImmediateFlush = immediateFlush;
         this.randomAccessFile = raf;
         isEndOfBatch.set(Boolean.FALSE);
@@ -56,13 +56,11 @@ public class FastRollingFileManager exte
         buffer = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
     }
 
-    public static FastRollingFileManager getFastRollingFileManager(
-            String fileName, String filePattern, boolean isAppend,
-            boolean immediateFlush, TriggeringPolicy policy,
-            RolloverStrategy strategy, String advertiseURI) {
-        return (FastRollingFileManager) getManager(fileName, new FactoryData(
-                filePattern, isAppend, immediateFlush, policy, strategy,
-                advertiseURI), FACTORY);
+    public static FastRollingFileManager getFastRollingFileManager(final String fileName, final String filePattern,
+            final boolean isAppend, final boolean immediateFlush, final TriggeringPolicy policy,
+            final RolloverStrategy strategy, final String advertiseURI, final Layout layout) {
+        return (FastRollingFileManager) getManager(fileName, new FactoryData(filePattern, isAppend, immediateFlush,
+            policy, strategy, advertiseURI, layout), FACTORY);
     }
 
     public Boolean isEndOfBatch() {
@@ -120,19 +118,17 @@ public class FastRollingFileManager exte
     /**
      * Factory to create a FastRollingFileManager.
      */
-    private static class FastRollingFileManagerFactory implements
-            ManagerFactory<FastRollingFileManager, FactoryData> {
+    private static class FastRollingFileManagerFactory implements ManagerFactory<FastRollingFileManager, FactoryData> {
 
         /**
          * Create the FastRollingFileManager.
-         * 
+         *
          * @param name The name of the entity to manage.
          * @param data The data required to create the entity.
          * @return a RollingFileManager.
          */
         @Override
-        public FastRollingFileManager createManager(String name,
-                FactoryData data) {
+        public FastRollingFileManager createManager(String name, FactoryData data) {
             File file = new File(name);
             final File parent = file.getParentFile();
             if (null != parent && !parent.exists()) {
@@ -147,10 +143,8 @@ public class FastRollingFileManager exte
             RandomAccessFile raf;
             try {
                 raf = new RandomAccessFile(name, "rw");
-                return new FastRollingFileManager(raf, name, data.pattern,
-                        new DummyOutputStream(), data.append,
-                        data.immediateFlush, size, time, data.policy,
-                        data.strategy, data.advertiseURI);
+                return new FastRollingFileManager(raf, name, data.pattern, new DummyOutputStream(), data.append,
+                        data.immediateFlush, size, time, data.policy, data.strategy, data.advertiseURI, data.layout);
             } catch (FileNotFoundException ex) {
                 LOGGER.error("FastRollingFileManager (" + name + ") " + ex);
             }
@@ -179,23 +173,25 @@ public class FastRollingFileManager exte
         private final TriggeringPolicy policy;
         private final RolloverStrategy strategy;
         private final String advertiseURI;
+        private final Layout layout;
 
         /**
          * Create the data for the factory.
-         * 
+         *
          * @param pattern The pattern.
          * @param append The append flag.
          * @param immediateFlush
          */
-        public FactoryData(String pattern, boolean append,
-                boolean immediateFlush, TriggeringPolicy policy,
-                RolloverStrategy strategy, String advertiseURI) {
+        public FactoryData(final String pattern, final boolean append, final boolean immediateFlush,
+                           final TriggeringPolicy policy, final RolloverStrategy strategy, final String advertiseURI,
+                           final Layout layout) {
             this.pattern = pattern;
             this.append = append;
             this.immediateFlush = immediateFlush;
             this.policy = policy;
             this.strategy = strategy;
             this.advertiseURI = advertiseURI;
+            this.layout = layout;
         }
     }
 

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java Wed May 15 07:32:09 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
+import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.appender.FileManager;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
@@ -46,8 +47,8 @@ public class RollingFileManager extends 
 
     protected RollingFileManager(final String fileName, final String pattern, final OutputStream os,
                                  final boolean append, final long size, final long time, final TriggeringPolicy policy,
-                                 final RolloverStrategy strategy, String advertiseURI) {
-        super(fileName, os, append, false, advertiseURI);
+                                 final RolloverStrategy strategy, final String advertiseURI, final Layout layout) {
+        super(fileName, os, append, false, advertiseURI, layout);
         this.size = size;
         this.initialTime = time;
         this.policy = policy;
@@ -65,14 +66,16 @@ public class RollingFileManager extends 
      * @param policy The TriggeringPolicy.
      * @param strategy The RolloverStrategy.
      * @param advertiseURI the URI to use when advertising the file
+     * @param layout The Layout.
      * @return A RollingFileManager.
      */
     public static RollingFileManager getFileManager(final String fileName, final String pattern, final boolean append,
                                                     final boolean bufferedIO, final TriggeringPolicy policy,
-                                                    final RolloverStrategy strategy, String advertiseURI) {
+                                                    final RolloverStrategy strategy, final String advertiseURI,
+                                                    final Layout layout) {
 
         return (RollingFileManager) getManager(fileName, new FactoryData(pattern, append,
-            bufferedIO, policy, strategy, advertiseURI), factory);
+            bufferedIO, policy, strategy, advertiseURI, layout), factory);
     }
 
     @Override
@@ -234,6 +237,7 @@ public class RollingFileManager extends 
         private final TriggeringPolicy policy;
         private final RolloverStrategy strategy;
         private final String advertiseURI;
+        private final Layout layout;
 
         /**
          * Create the data for the factory.
@@ -241,15 +245,18 @@ public class RollingFileManager extends 
          * @param append The append flag.
          * @param bufferedIO The bufferedIO flag.
          * @param advertiseURI
+         * @param layout The Layout.
          */
         public FactoryData(final String pattern, final boolean append, final boolean bufferedIO,
-                           final TriggeringPolicy policy, final RolloverStrategy strategy, String advertiseURI) {
+                           final TriggeringPolicy policy, final RolloverStrategy strategy, final String advertiseURI,
+                           final Layout layout) {
             this.pattern = pattern;
             this.append = append;
             this.bufferedIO = bufferedIO;
             this.policy = policy;
             this.strategy = strategy;
             this.advertiseURI = advertiseURI;
+            this.layout = layout;
         }
     }
 
@@ -287,7 +294,7 @@ public class RollingFileManager extends 
                     os = new BufferedOutputStream(os);
                 }
                 return new RollingFileManager(name, data.pattern, os, data.append, size, time, data.policy,
-                    data.strategy, data.advertiseURI);
+                    data.strategy, data.advertiseURI, data.layout);
             } catch (final FileNotFoundException ex) {
                 LOGGER.error("FileManager (" + name + ") " + ex);
             }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java Wed May 15 07:32:09 2013
@@ -18,6 +18,8 @@ package org.apache.logging.log4j.core.ne
 
 import java.util.HashMap;
 import java.util.Map;
+
+import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.appender.OutputStreamManager;
 
 import java.io.OutputStream;
@@ -50,8 +52,8 @@ public abstract class AbstractSocketMana
      * @param port The target port number.
      */
     public AbstractSocketManager(final String name, final OutputStream os, final InetAddress addr, final String host,
-                                 final int port) {
-        super(os, name);
+                                 final int port, final Layout layout) {
+        super(os, name, layout);
         this.address = addr;
         this.host = host;
         this.port = port;
@@ -69,7 +71,7 @@ public abstract class AbstractSocketMana
         Map<String, String> result = new HashMap<String, String>(super.getContentFormat());
         result.put("port", Integer.toString(port));
         result.put("address", address.getHostAddress());
-        
+
         return result;
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java Wed May 15 07:32:09 2013
@@ -20,6 +20,8 @@ import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.HashMap;
 import java.util.Map;
+
+import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
 
 import java.io.OutputStream;
@@ -38,26 +40,29 @@ public class DatagramSocketManager exten
      * @param address
      * @param host The host to connect to.
      * @param port The port on the host.
+     * @param layout The layout
      */
-    protected DatagramSocketManager(final String name, final OutputStream os, InetAddress address, final String host, final int port) {
-        super(name, os, address, host, port);
+    protected DatagramSocketManager(final String name, final OutputStream os, InetAddress address, final String host,
+                                    final int port, final Layout layout) {
+        super(name, os, address, host, port, layout);
     }
 
     /**
      * Obtain a SocketManager.
      * @param host The host to connect to.
      * @param port The port on the host.
+     * @param layout The layout.
      * @return A DatagramSocketManager.
      */
-    public static DatagramSocketManager getSocketManager(final String host, final int port) {
+    public static DatagramSocketManager getSocketManager(final String host, final int port, final Layout layout) {
         if (host == null || host.length() == 0) {
             throw new IllegalArgumentException("A host name is required");
         }
         if (port <= 0) {
             throw new IllegalArgumentException("A port value is required");
         }
-        return (DatagramSocketManager) getManager("UDP:" + host + ":" + port, new FactoryData(host, port), FACTORY
-        );
+        return (DatagramSocketManager) getManager("UDP:" + host + ":" + port, new FactoryData(host, port, layout),
+            FACTORY);
     }
 
     /**
@@ -82,10 +87,12 @@ public class DatagramSocketManager exten
     private static class FactoryData {
         private final String host;
         private final int port;
+        private final Layout layout;
 
-        public FactoryData(final String host, final int port) {
+        public FactoryData(final String host, final int port, final Layout layout) {
             this.host = host;
             this.port = port;
+            this.layout = layout;
         }
     }
 
@@ -104,7 +111,7 @@ public class DatagramSocketManager exten
                 LOGGER.error("Could not find address of " + data.host, ex);
                 return null;
             }
-            return new DatagramSocketManager(name, os, address, data.host, data.port);
+            return new DatagramSocketManager(name, os, address, data.host, data.port, data.layout);
         }
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketManager.java Wed May 15 07:32:09 2013
@@ -18,6 +18,8 @@ package org.apache.logging.log4j.core.ne
 
 import java.util.HashMap;
 import java.util.Map;
+
+import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.appender.AppenderRuntimeException;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
 import org.apache.logging.log4j.core.appender.OutputStreamManager;
@@ -65,10 +67,13 @@ public class TCPSocketManager extends Ab
      * @param host The name of the host.
      * @param port The port number on the host.
      * @param delay Reconnection interval.
+     * @param immediateFail
+     * @param layout The Layout.
      */
     public TCPSocketManager(final String name, final OutputStream os, final Socket sock, final InetAddress addr,
-                            final String host, final int port, final int delay, final boolean immediateFail) {
-        super(name, os, addr, host, port);
+                            final String host, final int port, final int delay, final boolean immediateFail,
+                            final Layout layout) {
+        super(name, os, addr, host, port, layout);
         this.reconnectionDelay = delay;
         this.socket = sock;
         this.immediateFail = immediateFail;
@@ -88,7 +93,8 @@ public class TCPSocketManager extends Ab
      * @param delay The interval to pause between retries.
      * @return A TCPSocketManager.
      */
-    public static TCPSocketManager getSocketManager(final String host, int port, int delay, boolean immediateFail) {
+    public static TCPSocketManager getSocketManager(final String host, int port, int delay,
+                                                    final boolean immediateFail, final Layout layout ) {
         if (host == null || host.length() == 0) {
             throw new IllegalArgumentException("A host name is required");
         }
@@ -99,7 +105,7 @@ public class TCPSocketManager extends Ab
             delay = DEFAULT_RECONNECTION_DELAY;
         }
         return (TCPSocketManager) getManager("TCP:" + host + ":" + port,
-            new FactoryData(host, port, delay, immediateFail), FACTORY);
+            new FactoryData(host, port, delay, immediateFail, layout), FACTORY);
     }
 
     @Override
@@ -222,12 +228,15 @@ public class TCPSocketManager extends Ab
         private final int port;
         private final int delay;
         private final boolean immediateFail;
+        private final Layout layout;
 
-        public FactoryData(final String host, final int port, final int delay, final boolean immediateFail) {
+        public FactoryData(final String host, final int port, final int delay, final boolean immediateFail,
+                           final Layout layout) {
             this.host = host;
             this.port = port;
             this.delay = delay;
             this.immediateFail = immediateFail;
+            this.layout = layout;
         }
     }
 
@@ -251,7 +260,7 @@ public class TCPSocketManager extends Ab
                 final Socket socket = new Socket(data.host, data.port);
                 os = socket.getOutputStream();
                 return new TCPSocketManager(name, os, socket, address, data.host, data.port, data.delay,
-                    data.immediateFail);
+                    data.immediateFail, data.layout);
             } catch (final IOException ex) {
                 LOGGER.error("TCPSocketManager (" + name + ") " + ex);
                 os = new ByteArrayOutputStream();
@@ -259,7 +268,8 @@ public class TCPSocketManager extends Ab
             if (data.delay == 0) {
                 return null;
             }
-            return new TCPSocketManager(name, os, null, address, data.host, data.port, data.delay, data.immediateFail);
+            return new TCPSocketManager(name, os, null, address, data.host, data.port, data.delay, data.immediateFail,
+                data.layout);
         }
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java (original)
+++ logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java Wed May 15 07:32:09 2013
@@ -52,7 +52,7 @@ public class OnStartupTriggeringPolicyTe
 
         public MyRollingManager(final TriggeringPolicy policy, final RolloverStrategy strategy) {
             super("testfile", "target/rolling1/test1-%i.log.gz", new ByteArrayOutputStream(),
-                false, 0, System.currentTimeMillis(), policy, strategy, null);
+                false, 0, System.currentTimeMillis(), policy, strategy, null, null);
         }
 
         public void setFileTime(final long timestamp) {

Modified: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java Wed May 15 07:32:09 2013
@@ -31,7 +31,7 @@ public class InMemoryAppender<T extends 
 
     public InMemoryAppender(final String name, final Layout<T> layout, final CompositeFilter filters,
                             final boolean handleException) {
-        super(name, layout, filters, handleException, true, new InMemoryManager(name));
+        super(name, layout, filters, handleException, true, new InMemoryManager(name, layout));
     }
 
     @Override
@@ -41,8 +41,8 @@ public class InMemoryAppender<T extends 
 
     private static class InMemoryManager extends OutputStreamManager {
 
-        public InMemoryManager(final String name) {
-            super(new ByteArrayOutputStream(), name);
+        public InMemoryManager(final String name, final Layout layout) {
+            super(new ByteArrayOutputStream(), name, layout);
         }
 
         @Override

Modified: logging/log4j/log4j2/trunk/pom.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/pom.xml?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/pom.xml (original)
+++ logging/log4j/log4j2/trunk/pom.xml Wed May 15 07:32:09 2013
@@ -306,6 +306,11 @@
         <version>2.2.9</version>
       </dependency>
       <dependency>
+        <groupId>com.h2database</groupId>
+        <artifactId>h2</artifactId>
+        <version>1.3.171</version>
+      </dependency>
+      <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-entitymanager</artifactId>
         <version>4.3.0.Beta2</version>

Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1482707&r1=1482706&r2=1482707&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed May 15 07:32:09 2013
@@ -22,6 +22,9 @@
   </properties>
   <body>
     <release version="2.0-beta7" date="2013-??-??" description="Bug fixes and enhancements">
+      <action issue="LOG4J2-254" dev="rgoers" type="fix">
+        Mark OutputStream in OutputStreamManager as volatile. Mark header and footer as final.
+      </action>
       <action issue="LOG4J-244" dev="rgoers" type="fix">
         Rewrite Appender was ignoring filters on referenced appenders.
       </action>



Mime
View raw message