You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2015/07/07 14:25:26 UTC

[1/2] logging-log4j2 git commit: LOG4J2-1030 LOG4J2-889 Header in layout should not be written on application startup if appending to an existing file.

Repository: logging-log4j2
Updated Branches:
  refs/heads/master c527ffcd6 -> c49cbc428


LOG4J2-1030 LOG4J2-889 Header in layout should not be written on
application startup if appending to an existing file.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/547574f9
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/547574f9
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/547574f9

Branch: refs/heads/master
Commit: 547574f972754001b4c0cd162dcff3c9346aa69e
Parents: c527ffc
Author: rpopma <rp...@apache.org>
Authored: Tue Jul 7 08:23:02 2015 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Jul 7 08:23:02 2015 +0900

----------------------------------------------------------------------
 .../log4j/core/appender/ConsoleAppender.java    |  2 +-
 .../log4j/core/appender/FileManager.java        |  9 +++--
 .../core/appender/MemoryMappedFileManager.java  |  7 ++--
 .../core/appender/OutputStreamManager.java      |  5 +--
 .../core/appender/RandomAccessFileManager.java  |  7 ++--
 .../appender/rolling/RollingFileManager.java    |  7 ++--
 .../rolling/RollingRandomAccessFileManager.java |  8 +++--
 .../log4j/core/net/AbstractSocketManager.java   |  6 ++--
 .../log4j/core/net/DatagramSocketManager.java   |  2 +-
 .../log4j/core/net/TcpSocketManager.java        |  2 +-
 .../core/appender/OutputStreamAppenderTest.java | 35 +++++++++++++++++---
 .../appender/RandomAccessFileManagerTest.java   |  8 ++---
 .../rolling/OnStartupTriggeringPolicyTest.java  |  2 +-
 .../RollingRandomAccessFileManagerTest.java     |  6 ++--
 .../log4j/test/appender/InMemoryAppender.java   |  9 ++---
 src/changes/changes.xml                         |  3 ++
 16 files changed, 79 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
index 81a1152..5a3c8aa 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
@@ -352,7 +352,7 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
          */
         @Override
         public OutputStreamManager createManager(final String name, final FactoryData data) {
-            return new OutputStreamManager(data.os, data.type, data.layout);
+            return new OutputStreamManager(data.os, data.type, data.layout, true);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
index d88c396..d58615c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
@@ -44,8 +44,9 @@ public class FileManager extends OutputStreamManager {
     private final int bufferSize;
 
     protected FileManager(final String fileName, final OutputStream os, final boolean append, final boolean locking,
-            final String advertiseURI, final Layout<? extends Serializable> layout, final int bufferSize) {
-        super(os, fileName, layout);
+            final String advertiseURI, final Layout<? extends Serializable> layout, final int bufferSize,
+            final boolean writeHeader) {
+        super(os, fileName, layout, writeHeader);
         this.isAppend = append;
         this.isLocking = locking;
         this.advertiseURI = advertiseURI;
@@ -196,6 +197,7 @@ public class FileManager extends OutputStreamManager {
                 parent.mkdirs();
             }
 
+            final boolean writeHeader = !data.append || !file.exists();
             OutputStream os;
             try {
                 os = new FileOutputStream(name, data.append);
@@ -205,7 +207,8 @@ public class FileManager extends OutputStreamManager {
                 } else {
                     bufferSize = -1; // signals to RollingFileManager not to use BufferedOutputStream
                 }
-                return new FileManager(name, os, data.append, data.locking, data.advertiseURI, data.layout, bufferSize);
+                return new FileManager(name, os, data.append, data.locking, data.advertiseURI, data.layout, bufferSize,
+                        writeHeader);
             } catch (final FileNotFoundException ex) {
                 LOGGER.error("FileManager (" + name + ") " + ex);
             }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
index 034d7ea..c9eeb60 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
@@ -64,8 +64,8 @@ public class MemoryMappedFileManager extends OutputStreamManager {
 
     protected MemoryMappedFileManager(final RandomAccessFile file, final String fileName, final OutputStream os,
             final boolean force, final long position, final int regionLength, final String advertiseURI,
-            final Layout<? extends Serializable> layout) throws IOException {
-        super(os, fileName, layout);
+            final Layout<? extends Serializable> layout, final boolean writeHeader) throws IOException {
+        super(os, fileName, layout, writeHeader);
         this.isForce = force;
         this.randomAccessFile = Objects.requireNonNull(file, "RandomAccessFile");
         this.regionLength = regionLength;
@@ -307,6 +307,7 @@ public class MemoryMappedFileManager extends OutputStreamManager {
                 file.delete();
             }
 
+            final boolean writeHeader = !data.append || !file.exists();
             final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
             RandomAccessFile raf = null;
             try {
@@ -314,7 +315,7 @@ public class MemoryMappedFileManager extends OutputStreamManager {
                 final long position = (data.append) ? raf.length() : 0;
                 raf.setLength(position + data.regionLength);
                 return new MemoryMappedFileManager(raf, name, os, data.force, position, data.regionLength,
-                        data.advertiseURI, data.layout);
+                        data.advertiseURI, data.layout, writeHeader);
             } catch (final Exception ex) {
                 LOGGER.error("MemoryMappedFileManager (" + name + ") " + ex);
                 Closer.closeSilently(raf);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
index 387687e..a9bdb0c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
@@ -30,11 +30,12 @@ public class OutputStreamManager extends AbstractManager {
     private volatile OutputStream os;
     protected final Layout<?> layout;
 
-    protected OutputStreamManager(final OutputStream os, final String streamName, final Layout<?> layout) {
+    protected OutputStreamManager(final OutputStream os, final String streamName, final Layout<?> layout,
+            boolean writeHeader) {
         super(streamName);
         this.os = os;
         this.layout = layout;
-        if (layout != null) {
+        if (writeHeader && layout != null) {
             final byte[] header = layout.getHeader();
             if (header != null) {
                 try {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
index 719025a..1110cbc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
@@ -47,8 +47,8 @@ public class RandomAccessFileManager extends OutputStreamManager {
     protected RandomAccessFileManager(final RandomAccessFile file,
             final String fileName, final OutputStream os,
             final boolean immediateFlush, final int bufferSize,
-            final String advertiseURI, final Layout<? extends Serializable> layout) {
-        super(os, fileName, layout);
+            final String advertiseURI, final Layout<? extends Serializable> layout, final boolean writeHeader) {
+        super(os, fileName, layout, writeHeader);
         this.isImmediateFlush = immediateFlush;
         this.randomAccessFile = file;
         this.advertiseURI = advertiseURI;
@@ -210,6 +210,7 @@ public class RandomAccessFileManager extends OutputStreamManager {
                 file.delete();
             }
 
+            final boolean writeHeader = !data.append || !file.exists();
             final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
             RandomAccessFile raf;
             try {
@@ -220,7 +221,7 @@ public class RandomAccessFileManager extends OutputStreamManager {
                     raf.setLength(0);
                 }
                 return new RandomAccessFileManager(raf, name, os, data.immediateFlush,
-                        data.bufferSize, data.advertiseURI, data.layout);
+                        data.bufferSize, data.advertiseURI, data.layout, writeHeader);
             } catch (final Exception ex) {
                 LOGGER.error("RandomAccessFileManager (" + name + ") " + ex);
             }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
index 4a945af..b66c62c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
@@ -49,8 +49,8 @@ public class RollingFileManager extends FileManager {
     protected RollingFileManager(final String fileName, final String pattern, final OutputStream os,
             final boolean append, final long size, final long time, final TriggeringPolicy triggeringPolicy,
             final RolloverStrategy rolloverStrategy, final String advertiseURI,
-            final Layout<? extends Serializable> layout, final int bufferSize) {
-        super(fileName, os, append, false, advertiseURI, layout, bufferSize);
+            final Layout<? extends Serializable> layout, final int bufferSize, final boolean writeHeader) {
+        super(fileName, os, append, false, advertiseURI, layout, bufferSize, writeHeader);
         this.size = size;
         this.initialTime = time;
         this.triggeringPolicy = triggeringPolicy;
@@ -310,6 +310,7 @@ public class RollingFileManager extends FileManager {
             }
             final long size = data.append ? file.length() : 0;
 
+            final boolean writeHeader = !data.append || !file.exists();
             OutputStream os;
             try {
                 os = new FileOutputStream(name, data.append);
@@ -321,7 +322,7 @@ public class RollingFileManager extends FileManager {
                 }
                 final long time = file.lastModified(); // LOG4J2-531 create file first so time has valid value
                 return new RollingFileManager(name, data.pattern, os, data.append, size, time, data.policy,
-                    data.strategy, data.advertiseURI, data.layout, bufferSize);
+                    data.strategy, data.advertiseURI, data.layout, bufferSize, writeHeader);
             } catch (final FileNotFoundException ex) {
                 LOGGER.error("FileManager (" + name + ") " + ex);
             }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
index 501fff0..87a5de8 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
@@ -50,8 +50,9 @@ public class RollingRandomAccessFileManager extends RollingFileManager {
             final String pattern, final OutputStream os, final boolean append,
             final boolean immediateFlush, final int bufferSize, final long size, final long time,
             final TriggeringPolicy policy, final RolloverStrategy strategy,
-            final String advertiseURI, final Layout<? extends Serializable> layout) {
-        super(fileName, pattern, os, append, size, time, policy, strategy, advertiseURI, layout, bufferSize);
+            final String advertiseURI, final Layout<? extends Serializable> layout, final boolean writeHeader) {
+        super(fileName, pattern, os, append, size, time, policy, strategy, advertiseURI, layout, bufferSize,
+                writeHeader);
         this.isImmediateFlush = immediateFlush;
         this.randomAccessFile = raf;
         isEndOfBatch.set(Boolean.FALSE);
@@ -181,6 +182,7 @@ public class RollingRandomAccessFileManager extends RollingFileManager {
             final long size = data.append ? file.length() : 0;
             final long time = file.exists() ? file.lastModified() : System.currentTimeMillis();
 
+            final boolean writeHeader = !data.append || !file.exists();
             RandomAccessFile raf = null;
             try {
                 raf = new RandomAccessFile(name, "rw");
@@ -194,7 +196,7 @@ public class RollingRandomAccessFileManager extends RollingFileManager {
                 }
                 return new RollingRandomAccessFileManager(raf, name, data.pattern, NullOutputStream.NULL_OUTPUT_STREAM,
                         data.append, data.immediateFlush, data.bufferSize, size, time, data.policy, data.strategy,
-                        data.advertiseURI, data.layout);
+                        data.advertiseURI, data.layout, writeHeader);
             } catch (final IOException ex) {
                 LOGGER.error("Cannot access RandomAccessFile {}) " + ex);
                 if (raf != null) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
index 4ce9690..ceeeeff 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
@@ -53,9 +53,9 @@ public abstract class AbstractSocketManager extends OutputStreamManager {
      * @param host The target host name.
      * @param port The target port number.
      */
-    public AbstractSocketManager(final String name, final OutputStream os, final InetAddress inetAddress, final String host,
-                                 final int port, final Layout<? extends Serializable> layout) {
-        super(os, name, layout);
+    public AbstractSocketManager(final String name, final OutputStream os, final InetAddress inetAddress,
+            final String host, final int port, final Layout<? extends Serializable> layout, final boolean writeHeader) {
+        super(os, name, layout, writeHeader);
         this.inetAddress = inetAddress;
         this.host = host;
         this.port = port;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
index 4a49171..0bcd793 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
@@ -45,7 +45,7 @@ public class DatagramSocketManager extends AbstractSocketManager {
      */
     protected DatagramSocketManager(final String name, final OutputStream os, final InetAddress inetAddress, final String host,
                 final int port, final Layout<? extends Serializable> layout) {
-        super(name, os, inetAddress, host, port, layout);
+        super(name, os, inetAddress, host, port, layout, true);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
index 60bc17d..f9aabb3 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
@@ -78,7 +78,7 @@ public class TcpSocketManager extends AbstractSocketManager {
     public TcpSocketManager(final String name, final OutputStream os, final Socket sock, final InetAddress inetAddress,
                             final String host, final int port, final int connectTimeoutMillis, final int delay,
                             final boolean immediateFail, final Layout<? extends Serializable> layout) {
-        super(name, os, inetAddress, host, port, layout);
+        super(name, os, inetAddress, host, port, layout, true);
         this.connectTimeoutMillis = connectTimeoutMillis;
         this.reconnectionDelay = delay;
         this.socket = sock;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamAppenderTest.java
index 90c5417..b91be76 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamAppenderTest.java
@@ -36,15 +36,42 @@ public class OutputStreamAppenderTest {
     @Test
     public void testAppender() {
         final Layout<String> layout = PatternLayout.createDefaultLayout();
-        final InMemoryAppender app = new InMemoryAppender("test", layout, null, false);
-        final LogEvent event = new Log4jLogEvent("TestLogger", null, OutputStreamAppenderTest.class.getName(), Level.INFO,
-            new SimpleMessage("Test"), null);
+        final boolean writeHeader = true;
+        final InMemoryAppender app = new InMemoryAppender("test", layout, null, false, writeHeader);
+        final String expectedHeader = null;
+        assertMessage("Test", app, expectedHeader);
+    }
+
+    @Test
+    public void testHeaderRequested() {
+        final PatternLayout layout = PatternLayout.newBuilder().withHeader("HEADERHEADER").build();
+        final boolean writeHeader = true;
+        final InMemoryAppender app = new InMemoryAppender("test", layout, null, false, writeHeader);
+        final String expectedHeader = "HEADERHEADER";
+        assertMessage("Test", app, expectedHeader);
+    }
+
+    @Test
+    public void testHeaderSuppressed() {
+        final PatternLayout layout = PatternLayout.newBuilder().withHeader("HEADERHEADER").build();
+        final boolean writeHeader = false;
+        final InMemoryAppender app = new InMemoryAppender("test", layout, null, false, writeHeader);
+        final String expectedHeader = null;
+        assertMessage("Test", app, expectedHeader);
+    }
+
+    private void assertMessage(String string, InMemoryAppender app, String header) {
+        final LogEvent event = new Log4jLogEvent("TestLogger", null, OutputStreamAppenderTest.class.getName(),
+                Level.INFO, new SimpleMessage("Test"), null);
         app.start();
         assertTrue("Appender did not start", app.isStarted());
         app.append(event);
+        app.append(event);
         final String msg = app.toString();
         assertNotNull("No message", msg);
-        assertTrue("Incorrect message: " + msg , msg.endsWith("Test" + Constants.LINE_SEPARATOR));
+        final String expectedHeader = header == null ? "" : header;
+        final String expected = expectedHeader + "Test" + Constants.LINE_SEPARATOR + "Test" + Constants.LINE_SEPARATOR;
+        assertTrue("Incorrect message: " + msg, msg.equals(expected));
         app.stop();
         assertFalse("Appender did not stop", app.isStarted());
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
index 1b9c472..e38f5fa 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
@@ -44,7 +44,7 @@ public class RandomAccessFileManagerTest {
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
             final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
             final RandomAccessFileManager manager = new RandomAccessFileManager(raf, file.getName(), os, false,
-                    RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null);
+                    RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, true);
 
             final int size = RandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3;
             final byte[] data = new byte[size];
@@ -66,7 +66,7 @@ public class RandomAccessFileManagerTest {
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
             final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
             final RandomAccessFileManager manager = new RandomAccessFileManager(raf, file.getName(), os, false,
-                    RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null);
+                    RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, true);
 
             final int size = RandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3 + 1;
             final byte[] data = new byte[size];
@@ -87,7 +87,7 @@ public class RandomAccessFileManagerTest {
             assertNotEquals(bufferSize, RandomAccessFileManager.DEFAULT_BUFFER_SIZE);
 
             final RandomAccessFileManager manager = new RandomAccessFileManager(raf, file.getName(), os, false,
-                    bufferSize, null, null);
+                    bufferSize, null, null, true);
 
             // check the resulting buffer size is what was requested
             assertEquals(bufferSize, manager.getBufferSize());
@@ -101,7 +101,7 @@ public class RandomAccessFileManagerTest {
             final OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM;
             final int bufferSize = 1;
             final RandomAccessFileManager manager = new RandomAccessFileManager(raf, file.getName(), os, false,
-                    bufferSize, null, null);
+                    bufferSize, null, null, true);
 
             final int size = bufferSize * 3 + 1;
             final byte[] data = new byte[size];

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
index 293c10b..c0306af 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
@@ -52,7 +52,7 @@ public class OnStartupTriggeringPolicyTest {
 
         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, null, 8192);
+                false, 0, System.currentTimeMillis(), policy, strategy, null, null, 8192, true);
         }
 
         public void setFileTime(final long timestamp) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java
index 75f422e..d96d75e 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManagerTest.java
@@ -62,7 +62,7 @@ public class RollingRandomAccessFileManagerTest {
         final RolloverStrategy rolloverStrategy = null;
         final RollingRandomAccessFileManager manager = new RollingRandomAccessFileManager(raf,
                 file.getName(), Strings.EMPTY, os, append, flushNow, RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE, triggerSize, time,
-                triggerPolicy, rolloverStrategy, null, null);
+                triggerPolicy, rolloverStrategy, null, null, true);
 
         final int size = RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3;
         final byte[] data = new byte[size];
@@ -93,7 +93,7 @@ public class RollingRandomAccessFileManagerTest {
         final RolloverStrategy rolloverStrategy = null;
         final RollingRandomAccessFileManager manager = new RollingRandomAccessFileManager(raf,
                 file.getName(), Strings.EMPTY, os, append, flushNow, RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE, triggerSize, time,
-                triggerPolicy, rolloverStrategy, null, null);
+                triggerPolicy, rolloverStrategy, null, null, true);
 
         final int size = RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3 + 1;
         final byte[] data = new byte[size];
@@ -120,7 +120,7 @@ public class RollingRandomAccessFileManagerTest {
         final RolloverStrategy rolloverStrategy = null;
         final RollingRandomAccessFileManager manager = new RollingRandomAccessFileManager(raf,
                 file.getName(), Strings.EMPTY, os, append, flushNow, bufferSize, triggerSize, time,
-                triggerPolicy, rolloverStrategy, null, null);
+                triggerPolicy, rolloverStrategy, null, null, true);
 
         // check the resulting buffer size is what was requested
         assertEquals(bufferSize, manager.getBufferSize());

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
index 66e7b71..9b483a6 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
@@ -32,8 +32,8 @@ public class InMemoryAppender extends AbstractOutputStreamAppender<InMemoryAppen
     private static final long serialVersionUID = 1L;
 
     public InMemoryAppender(final String name, final Layout<? extends Serializable> layout, final CompositeFilter filters,
-                            final boolean ignoreExceptions) {
-        super(name, layout, filters, ignoreExceptions, true, new InMemoryManager(name, layout));
+                            final boolean ignoreExceptions, final boolean writeHeader) {
+        super(name, layout, filters, ignoreExceptions, true, new InMemoryManager(name, layout, writeHeader));
     }
 
     @Override
@@ -43,8 +43,9 @@ public class InMemoryAppender extends AbstractOutputStreamAppender<InMemoryAppen
 
     static class InMemoryManager extends OutputStreamManager {
 
-        public InMemoryManager(final String name, final Layout<? extends Serializable> layout) {
-            super(new ByteArrayOutputStream(), name, layout);
+        public InMemoryManager(final String name, final Layout<? extends Serializable> layout,
+                final boolean writeHeader) {
+            super(new ByteArrayOutputStream(), name, layout, writeHeader);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/547574f9/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 1ef9568..c6baa81 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,6 +24,9 @@
   </properties>
   <body>
     <release version="2.4" date="2015-MM-DD" description="GA Release 2.4">
+      <action issue="LOG4J2-889" dev="rpopma" type="fix">
+        Header in layout should not be written on application startup if appending to an existing file.
+      </action>
       <action issue="LOG4J2-918" dev="rpopma" type="fix">
         Clarify documentation for combining async with sync loggers.
       </action>


[2/2] logging-log4j2 git commit: git-ignore log4j-samples/configuration/target/

Posted by rp...@apache.org.
git-ignore log4j-samples/configuration/target/

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c49cbc42
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c49cbc42
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c49cbc42

Branch: refs/heads/master
Commit: c49cbc4289eab830e1af41fc70c7835d77e74e37
Parents: 547574f
Author: rpopma <rp...@apache.org>
Authored: Tue Jul 7 21:25:22 2015 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Jul 7 21:25:22 2015 +0900

----------------------------------------------------------------------
 log4j-samples/.gitignore | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c49cbc42/log4j-samples/.gitignore
----------------------------------------------------------------------
diff --git a/log4j-samples/.gitignore b/log4j-samples/.gitignore
index edc6e06..4319c95 100644
--- a/log4j-samples/.gitignore
+++ b/log4j-samples/.gitignore
@@ -1,2 +1,3 @@
 /target/
 /.project
+/configuration/target/