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 2016/03/04 15:22:39 UTC

[01/50] [abbrv] logging-log4j2 git commit: Revert "[LOG4J2-1300] Make other pattern classes serializable."

Repository: logging-log4j2
Updated Branches:
  refs/heads/LOG4J2-1278-gc-free-logger 128311966 -> 2faae9c97


Revert "[LOG4J2-1300] Make other pattern classes serializable."

This reverts commit 7a5f4e33f30d041c298475fb2fbd044ddba027c8.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 7c4b2c50b1a4abe3f9b6838ea5cf395e7012184c
Parents: 0c00057
Author: Matt Sicker <bo...@gmail.com>
Authored: Mon Feb 29 19:09:47 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Mon Feb 29 19:14:36 2016 -0600

----------------------------------------------------------------------
 .../org/apache/logging/log4j/core/pattern/PatternParser.java     | 4 +---
 .../org/apache/logging/log4j/core/pattern/RegexReplacement.java  | 4 +---
 2 files changed, 2 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7c4b2c50/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
index e18175b..4adb90a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.io.Serializable;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
@@ -41,8 +40,7 @@ import org.apache.logging.log4j.util.Strings;
  * It is this class that parses conversion patterns and creates a chained list of {@link PatternConverter
  * PatternConverters}.
  */
-public final class PatternParser implements Serializable {
-    private static final long serialVersionUID = 1L;
+public final class PatternParser {
     static final String NO_CONSOLE_NO_ANSI = "noConsoleNoAnsi";
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7c4b2c50/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacement.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacement.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacement.java
index b0831ea..3ffc63c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacement.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacement.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.io.Serializable;
 import java.util.regex.Pattern;
 
 import org.apache.logging.log4j.Logger;
@@ -29,8 +28,7 @@ import org.apache.logging.log4j.status.StatusLogger;
  * Replace tokens in the LogEvent message.
  */
 @Plugin(name = "replace", category = "Core", printObject = true)
-public final class RegexReplacement implements Serializable {
-    private static final long serialVersionUID = 1L;
+public final class RegexReplacement {
 
     private static final Logger LOGGER = StatusLogger.getLogger();
 


[08/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id in PatternLayout. Add missing unit test on existing thread name converter.

Posted by rp...@apache.org.
[LOG4J2-1299] Add pattern converter for thread id in PatternLayout. Add
missing unit test on existing thread name converter.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: aa82192fb56621f0b7eb6957e3e730cf7761e63b
Parents: 848ed03
Author: ggregory <gg...@apache.org>
Authored: Mon Feb 29 23:01:37 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Mon Feb 29 23:01:37 2016 -0800

----------------------------------------------------------------------
 .../log4j/core/pattern/PatternParserTest.java      | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/aa82192f/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
index f77eab7..e7f51b4 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
@@ -244,6 +244,23 @@ public class PatternParserTest {
     }
 
     @Test
+    public void testThreadNamePattern() {
+        testThreadNamePattern("%thread");
+    }
+
+    private void testThreadNamePattern(final String pattern) {
+        final List<PatternFormatter> formatters = parser.parse(pattern);
+        assertNotNull(formatters);
+        assertEquals(1, formatters.size());
+        assertTrue(formatters.get(0).getConverter() instanceof ThreadPatternConverter);
+    }
+
+    @Test
+    public void testThreadNameShortPattern() {
+        testThreadNamePattern("%t");
+    }
+
+    @Test
     public void testNanoPatternShortChangesConfigurationNanoClock() {
         Configuration config = new NullConfiguration();
         assertTrue(config.getNanoClock() instanceof DummyNanoClock);


[35/50] [abbrv] logging-log4j2 git commit: LOG4J2-1262 - Stop throwing unnecessary exception in Log4jServletContextListener.contextDestroyed().

Posted by rp...@apache.org.
LOG4J2-1262 - Stop throwing unnecessary exception in Log4jServletContextListener.contextDestroyed().


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: ebc53bbdce108bb6b5af86595a11eddca256a353
Parents: b1a09ce
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 20:21:19 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 20:21:42 2016 -0600

----------------------------------------------------------------------
 .../org/apache/logging/log4j/web/Log4jServletContextListener.java | 3 ++-
 src/changes/changes.xml                                           | 3 +++
 2 files changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebc53bbd/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContextListener.java
----------------------------------------------------------------------
diff --git a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContextListener.java b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContextListener.java
index 35f4aae..f4afaba 100644
--- a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContextListener.java
+++ b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContextListener.java
@@ -52,7 +52,8 @@ public class Log4jServletContextListener implements ServletContextListener {
     @Override
     public void contextDestroyed(final ServletContextEvent event) {
         if (this.servletContext == null || this.initializer == null) {
-            throw new IllegalStateException("Context destroyed before it was initialized.");
+            LOGGER.warn("Context destroyed before it was initialized.");
+            return;
         }
         LOGGER.debug("Log4jServletContextListener ensuring that Log4j shuts down properly.");
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebc53bbd/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index eaf24b5..30f7a67 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -178,6 +178,9 @@
       <action issue="LOG4J2-1275" dev="mattsicker" type="fix" due-to="Ludovic Hochet">
         Fix RollingAppenderNoUnconditionalDeleteTest repeat test runs from failing.
       </action>
+      <action issue="LOG4J2-1262" dev="mattsicker" type="fix">
+        Stop throwing unnecessary exception in Log4jServletContextListener.contextDestroyed().
+      </action>
     </release>
     <release version="2.5" date="2015-12-06" description="GA Release 2.5">
       <action issue="LOG4J2-324" dev="rpopma" type="fix">


[49/50] [abbrv] logging-log4j2 git commit: LOG4J2-1274 fixed performance bug in TextEncoderHelper.copy(), added TextEncoderHelperBenchmark

Posted by rp...@apache.org.
LOG4J2-1274 fixed performance bug in TextEncoderHelper.copy(), added TextEncoderHelperBenchmark


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 963f9654ecf6edd0476a9968d2336729359dc21d
Parents: 463c9ea
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 4 23:10:56 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 4 23:10:56 2016 +0900

----------------------------------------------------------------------
 .../log4j/core/layout/TextEncoderHelper.java    |  19 +-
 .../perf/jmh/TextEncoderHelperBenchmark.java    | 243 +++++++++++++++++++
 2 files changed, 256 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/963f9654/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
index c8533d7..0da19b5 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
@@ -48,7 +48,7 @@ public class TextEncoderHelper {
         this.cachedCharBuffer = CharBuffer.wrap(new char[bufferSize]);
     }
 
-    public void encodeText(final CharSequence text, final ByteBufferDestination destination) {
+    public void encodeText(final StringBuilder text, final ByteBufferDestination destination) {
         charsetEncoder.reset();
         ByteBuffer byteBuf = destination.getByteBuffer();
         final CharBuffer charBuf = getCachedCharBuffer();
@@ -67,6 +67,12 @@ public class TextEncoderHelper {
         } while (!endOfInput);
     }
 
+    public void encodeText(final CharBuffer charBuf, final ByteBufferDestination destination) {
+        charsetEncoder.reset();
+        final ByteBuffer byteBuf = destination.getByteBuffer();
+        encode(charBuf, true, destination, byteBuf);
+    }
+
     private ByteBuffer encode(final CharBuffer charBuf, final boolean endOfInput,
             final ByteBufferDestination destination, ByteBuffer byteBuf) {
         try {
@@ -116,17 +122,18 @@ public class TextEncoderHelper {
     }
 
     /**
-     * Copies characters from the CharSequence into the CharBuffer,
+     * Copies characters from the StringBuilder into the CharBuffer,
      * starting at the specified offset and ending when either all
      * characters have been copied or when the CharBuffer is full.
      *
      * @return the number of characters that were copied
      */
-    static int copy(final CharSequence source, final int offset, final CharBuffer destination) {
+    static int copy(final StringBuilder source, final int offset, final CharBuffer destination) {
         final int length = Math.min(source.length() - offset, destination.remaining());
-        for (int i = offset; i < offset + length; i++) {
-            destination.put(source.charAt(i));
-        }
+        final char[] array = destination.array();
+        final int start = destination.position();
+        source.getChars(offset, offset + length, array, start);
+        destination.position(start + length);
         return length;
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/963f9654/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TextEncoderHelperBenchmark.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TextEncoderHelperBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TextEncoderHelperBenchmark.java
new file mode 100644
index 0000000..bab01ff
--- /dev/null
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TextEncoderHelperBenchmark.java
@@ -0,0 +1,243 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.perf.jmh;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.ThreadContext.ContextStack;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.layout.ByteBufferDestination;
+import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.apache.logging.log4j.core.layout.TextEncoderHelper;
+import org.apache.logging.log4j.message.Message;
+import org.apache.logging.log4j.message.SimpleMessage;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+
+/**
+ * Tests Log4j2 TextEncoderHelper performance.
+ */
+// ============================== HOW TO RUN THIS TEST: ====================================
+//
+// single thread:
+// java -Dfile.encoding=ISO-8859-1 -Dlog4j2.is.webapp=false -Dlog4j2.enable.threadlocals=true -jar log4j-perf/target/benchmarks.jar ".*TextEncoderHelper.*" -f 1 -wi 5 -i 10
+// java -Dfile.encoding=UTF8 -Dlog4j2.is.webapp=false -Dlog4j2.enable.threadlocals=true -jar log4j-perf/target/benchmarks.jar ".*TextEncoderHelper.*" -f 1 -wi 5 -i 10
+//
+// Usage help:
+// java -jar log4j-perf/target/benchmarks.jar -help
+//
+@State(Scope.Thread)
+public class TextEncoderHelperBenchmark {
+
+    final static String STR = "AB!(%087936DZYXQWEIOP$#^~-=/><nb"; // length=32
+    final static String STR_TEXT = "20:01:59.9876 INFO [org.apache.logging.log4j.perf.jmh.TextEncoderHelperBenchmark] AB!(%087936DZYXQWEIOP$#^~-=/><nb"; // length=32
+    final static StringBuilder BUFF_TEXT = new StringBuilder(STR_TEXT);
+    final static CharBuffer CHAR_BUFFER = CharBuffer.wrap(STR.toCharArray());
+
+    final static LogEvent EVENT = createLogEvent();
+    private static final Charset CHARSET_DEFAULT = Charset.defaultCharset();
+    private final PatternLayout PATTERN_M_C_D = PatternLayout.createLayout("%d %c %m%n", null, null, null, CHARSET_DEFAULT, false, true, null, null);
+    private final Destination destination = new Destination();
+
+    class Destination implements ByteBufferDestination {
+        long count = 0;
+        ByteBuffer buffer = ByteBuffer.wrap(new byte[256*1024]);
+
+        @Override
+        public ByteBuffer getByteBuffer() {
+            return buffer;
+        }
+
+        @Override
+        public ByteBuffer drain(ByteBuffer buf) {
+            buf.flip();
+            count += buf.limit();
+            buf.clear();
+            return buf;
+        }
+    }
+
+    private static LogEvent createLogEvent() {
+        final Marker marker = null;
+        final String fqcn = "com.mycom.myproject.mypackage.MyClass";
+        final Level level = Level.DEBUG;
+        final Message message = new SimpleMessage(STR);
+        final Throwable t = null;
+        final Map<String, String> mdc = null;
+        final ContextStack ndc = null;
+        final String threadName = null;
+        final StackTraceElement location = null;
+        final long timestamp = 12345678;
+
+        return Log4jLogEvent.newBuilder() //
+                .setLoggerName("name(ignored)") //
+                .setMarker(marker) //
+                .setLoggerFqcn(fqcn) //
+                .setLevel(level) //
+                .setMessage(message) //
+                .setThrown(t) //
+                .setContextMap(mdc) //
+                .setContextStack(ndc) //
+                .setThreadName(threadName) //
+                .setSource(location) //
+                .setTimeMillis(timestamp) //
+                .build();
+    }
+
+    @Benchmark
+    @BenchmarkMode(Mode.SampleTime)
+    @OutputTimeUnit(TimeUnit.NANOSECONDS)
+    public byte[] stringGetBytes() {
+        return STR_TEXT.getBytes();
+    }
+
+    private static final ThreadLocal<TextEncoderHelper> textEncoderHelper = new ThreadLocal<>();
+    private TextEncoderHelper getCachedTextEncoderHelper() {
+        TextEncoderHelper result = textEncoderHelper.get();
+        if (result == null) {
+            result = new TextEncoderHelper(CHARSET_DEFAULT);
+            textEncoderHelper.set(result);
+        }
+        return result;
+    }
+
+    @Benchmark
+    @BenchmarkMode(Mode.SampleTime)
+    @OutputTimeUnit(TimeUnit.NANOSECONDS)
+    public long textEncoderEncode() {
+        final TextEncoderHelper helper = getCachedTextEncoderHelper();
+        helper.encodeText(BUFF_TEXT, destination);
+
+        return destination.count;
+    }
+
+    @Benchmark
+    @BenchmarkMode(Mode.SampleTime)
+    @OutputTimeUnit(TimeUnit.NANOSECONDS)
+    public long charBufferEncode() {
+        final TextEncoderHelper helper = getCachedTextEncoderHelper();
+        CHAR_BUFFER.limit(CHAR_BUFFER.capacity());
+        CHAR_BUFFER.position(0);
+        helper.encodeText(CHAR_BUFFER, destination);
+
+        return destination.count;
+    }
+
+    @Benchmark
+    @BenchmarkMode(Mode.SampleTime)
+    @OutputTimeUnit(TimeUnit.NANOSECONDS)
+    public long charBufferCopyAndEncode() {
+        final TextEncoderHelper helper = getCachedTextEncoderHelper();
+        CHAR_BUFFER.clear();
+        CHAR_BUFFER.put(STR);
+        CHAR_BUFFER.flip();
+        helper.encodeText(CHAR_BUFFER, destination);
+
+        return destination.count;
+    }
+
+    @Benchmark
+    @BenchmarkMode(Mode.SampleTime)
+    @OutputTimeUnit(TimeUnit.NANOSECONDS)
+    public long textHelperCopyAndEncode() {
+        final TextEncoderHelper helper = getCachedTextEncoderHelper();
+        CHAR_BUFFER.clear();
+        copy(BUFF_TEXT, 0, CHAR_BUFFER);
+        CHAR_BUFFER.flip();
+        helper.encodeText(CHAR_BUFFER, destination);
+
+        return destination.count;
+    }
+
+    /**
+     * Copies characters from the CharSequence into the CharBuffer,
+     * starting at the specified offset and ending when either all
+     * characters have been copied or when the CharBuffer is full.
+     *
+     * @return the number of characters that were copied
+     */
+    private static int copy(final StringBuilder source, final int offset, final CharBuffer destination) {
+        final int length = Math.min(source.length() - offset, destination.remaining());
+        final char[] array = destination.array();
+        final int start = destination.position();
+        source.getChars(offset, offset+length, array, start);
+        destination.position(start + length);
+        return length;
+    }
+
+    @Benchmark
+    @BenchmarkMode(Mode.SampleTime)
+    @OutputTimeUnit(TimeUnit.NANOSECONDS)
+    public long byteArrayMCD() {
+        byte[] data =  PATTERN_M_C_D.toByteArray(EVENT);
+        ByteBuffer buff = destination.getByteBuffer();
+        if (buff.remaining() < data.length) {
+            buff = destination.drain(buff);
+        }
+        buff.put(data);
+        return destination.count;
+    }
+
+    @Benchmark
+    @BenchmarkMode(Mode.SampleTime)
+    @OutputTimeUnit(TimeUnit.NANOSECONDS)
+    public long serializableMCD() {
+        String str = PATTERN_M_C_D.toSerializable(EVENT);
+        byte[] data = str.getBytes(CHARSET_DEFAULT);
+        ByteBuffer buff = destination.getByteBuffer();
+        if (buff.remaining() < data.length) {
+            buff = destination.drain(buff);
+        }
+        buff.put(data);
+        return destination.count;
+    }
+
+//    @Benchmark
+//    @BenchmarkMode(Mode.SampleTime)
+//    @OutputTimeUnit(TimeUnit.NANOSECONDS)
+//    public StringBuilder toTextMCD() {
+//        StringBuilder str = PATTERN_M_C_D.toText(EVENT);
+//        return str;
+//    }
+
+    @Benchmark
+    @BenchmarkMode(Mode.SampleTime)
+    @OutputTimeUnit(TimeUnit.NANOSECONDS)
+    public String toStringMCD() {
+        String str = PATTERN_M_C_D.toSerializable(EVENT);
+        return str;
+    }
+
+    @Benchmark
+    @BenchmarkMode(Mode.SampleTime)
+    @OutputTimeUnit(TimeUnit.NANOSECONDS)
+    public long encodeMCD() {
+        PATTERN_M_C_D.encode(EVENT, destination);
+        return destination.count;
+    }
+}


[06/50] [abbrv] logging-log4j2 git commit: LOG4J2-1300 - Remove serializability from classes that don't need it

Posted by rp...@apache.org.
LOG4J2-1300 - Remove serializability from classes that don't need it

Appenders and Filters are already supposed to be Serializable based on the abstract classes. This is not feasible based on the use of many non-serializable JDK classes (e.g., OutputStream, Buffer). As LogEvent, Logger, and MessageFactory (implementations) all implement Serializable without requiring everything else, then there's no need to serialize appenders, filters, and all the other plugin objects that are never serialized anywhere.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 5c6819530803357c8e580ad5143db4f2a4f33e64
Parents: 4e35f3f
Author: Matt Sicker <bo...@gmail.com>
Authored: Mon Feb 29 19:53:26 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Mon Feb 29 20:00:10 2016 -0600

----------------------------------------------------------------------
 .../logging/log4j/core/AbstractLifeCycle.java   |  6 +-
 .../log4j/core/appender/AbstractAppender.java   |  2 -
 .../appender/AbstractOutputStreamAppender.java  |  2 -
 .../core/appender/AbstractWriterAppender.java   |  2 -
 .../log4j/core/appender/AsyncAppender.java      |  1 -
 .../log4j/core/appender/ConsoleAppender.java    |  1 -
 .../core/appender/DefaultErrorHandler.java      |  5 +-
 .../log4j/core/appender/FailoverAppender.java   |  2 -
 .../log4j/core/appender/FileAppender.java       |  1 -
 .../core/appender/MemoryMappedFileAppender.java |  2 -
 .../core/appender/OutputStreamAppender.java     |  2 -
 .../core/appender/RandomAccessFileAppender.java |  2 -
 .../core/appender/RollingFileAppender.java      |  1 -
 .../RollingRandomAccessFileAppender.java        |  3 -
 .../log4j/core/appender/SmtpAppender.java       |  1 -
 .../log4j/core/appender/SocketAppender.java     |  2 -
 .../log4j/core/appender/SyslogAppender.java     |  1 -
 .../log4j/core/appender/WriterAppender.java     |  2 -
 .../appender/db/AbstractDatabaseAppender.java   |  1 -
 .../logging/log4j/core/async/AsyncLogger.java   |  1 -
 .../log4j/core/async/AsyncLoggerConfig.java     |  4 --
 .../log4j/core/async/AsyncLoggerContext.java    |  2 -
 .../core/config/AbstractConfiguration.java      | 38 ++++++-----
 .../log4j/core/config/AppenderControl.java      |  1 -
 .../core/config/ConfigurationScheduler.java     |  1 -
 .../log4j/core/config/DefaultConfiguration.java |  2 -
 .../logging/log4j/core/config/LoggerConfig.java |  1 -
 .../log4j/core/config/NullConfiguration.java    |  1 -
 .../log4j/core/filter/AbstractFilter.java       |  2 -
 .../log4j/core/filter/AbstractFilterable.java   |  2 -
 .../logging/log4j/core/filter/BurstFilter.java  |  2 -
 .../log4j/core/filter/CompositeFilter.java      |  2 -
 .../core/filter/DynamicThresholdFilter.java     |  2 -
 .../log4j/core/filter/LevelRangeFilter.java     |  2 -
 .../logging/log4j/core/filter/MapFilter.java    |  2 -
 .../logging/log4j/core/filter/MarkerFilter.java |  2 -
 .../logging/log4j/core/filter/RegexFilter.java  |  2 -
 .../logging/log4j/core/filter/ScriptFilter.java |  1 -
 .../log4j/core/filter/StructuredDataFilter.java |  2 -
 .../core/filter/ThreadContextMapFilter.java     |  2 -
 .../log4j/core/filter/ThresholdFilter.java      |  2 -
 .../logging/log4j/core/filter/TimeFilter.java   |  2 -
 .../log4j/core/layout/AbstractCsvLayout.java    |  1 -
 .../core/layout/AbstractJacksonLayout.java      |  1 -
 .../log4j/core/layout/AbstractLayout.java       |  4 +-
 .../log4j/core/layout/AbstractStringLayout.java | 16 -----
 .../log4j/core/layout/CsvLogEventLayout.java    |  2 -
 .../log4j/core/layout/CsvParameterLayout.java   |  2 -
 .../logging/log4j/core/layout/GelfLayout.java   |  1 -
 .../logging/log4j/core/layout/HtmlLayout.java   |  1 -
 .../logging/log4j/core/layout/JsonLayout.java   |  2 -
 .../logging/log4j/core/layout/PatternMatch.java | 20 ++----
 .../log4j/core/layout/Rfc5424Layout.java        |  2 -
 .../log4j/core/layout/SerializedLayout.java     |  2 -
 .../logging/log4j/core/layout/SyslogLayout.java |  2 -
 .../logging/log4j/core/layout/XmlLayout.java    |  2 -
 .../log4j/core/BasicConfigurationFactory.java   |  1 -
 .../db/AbstractDatabaseAppenderTest.java        |  2 -
 ...DynamicThresholdFilterSerializationTest.java | 47 --------------
 .../core/layout/SerializableLayoutTest.java     | 66 --------------------
 .../log4j/test/appender/AlwaysFailAppender.java |  2 -
 .../logging/log4j/test/layout/BasicLayout.java  |  1 -
 .../log4j/test/layout/SerializableLayout.java   | 48 --------------
 .../log4j/flume/appender/FlumeAppender.java     |  1 -
 .../log4j/nosql/appender/NoSqlAppender.java     |  1 -
 65 files changed, 25 insertions(+), 319 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLifeCycle.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLifeCycle.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLifeCycle.java
index 1bea574..a5a0c77 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLifeCycle.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLifeCycle.java
@@ -16,8 +16,6 @@
  */
 package org.apache.logging.log4j.core;
 
-import java.io.Serializable;
-
 import org.apache.logging.log4j.status.StatusLogger;
 
 /**
@@ -26,15 +24,13 @@ import org.apache.logging.log4j.status.StatusLogger;
  * Wraps a {@link LifeCycle.State}.
  * </p>
  */
-public class AbstractLifeCycle implements LifeCycle, Serializable {
+public class AbstractLifeCycle implements LifeCycle {
 
     /**
      * Allow subclasses access to the status logger without creating another instance.
      */
     protected static final org.apache.logging.log4j.Logger LOGGER = StatusLogger.getLogger();
 
-    private static final long serialVersionUID = 1L;
-
     private volatile LifeCycle.State state = LifeCycle.State.INITIALIZED;
 
     protected boolean equalsImpl(final Object obj) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java
index af01fc1..9f253a0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java
@@ -32,8 +32,6 @@ import org.apache.logging.log4j.core.util.Integers;
  */
 public abstract class AbstractAppender extends AbstractFilterable implements Appender {
 
-    private static final long serialVersionUID = 1L;
-
     private final String name;
     private final boolean ignoreExceptions;
     private final Layout<? extends Serializable> layout;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
index 680ced9..7ed06d6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
@@ -28,8 +28,6 @@ import org.apache.logging.log4j.core.LogEvent;
  */
 public abstract class AbstractOutputStreamAppender<M extends OutputStreamManager> extends AbstractAppender {
 
-    private static final long serialVersionUID = 1L;
-
     /**
      * Immediate flush means that the underlying writer or output stream will be flushed at the end of each append
      * operation. Immediate flush is slower but ensures that each append request is actually written. If

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractWriterAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractWriterAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractWriterAppender.java
index 2346d7d..18152fd 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractWriterAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractWriterAppender.java
@@ -32,8 +32,6 @@ import org.apache.logging.log4j.core.StringLayout;
  */
 public abstract class AbstractWriterAppender<M extends WriterManager> extends AbstractAppender {
 
-    private static final long serialVersionUID = 1L;
-
     /**
      * Immediate flush means that the underlying writer will be flushed at the
      * end of each append operation. Immediate flush is slower but ensures that

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
index f9f25b3..c9d8326 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
@@ -54,7 +54,6 @@ import org.apache.logging.log4j.core.util.Constants;
 @Plugin(name = "Async", category = "Core", elementType = "appender", printObject = true)
 public final class AsyncAppender extends AbstractAppender {
 
-    private static final long serialVersionUID = 1L;
     private static final int DEFAULT_QUEUE_SIZE = 128;
     private static final String SHUTDOWN = "Shutdown";
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/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 e751ee0..354171a 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
@@ -51,7 +51,6 @@ import org.apache.logging.log4j.util.PropertiesUtil;
 @Plugin(name = "Console", category = "Core", elementType = "appender", printObject = true)
 public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputStreamManager> {
 
-    private static final long serialVersionUID = 1L;
     private static final String JANSI_CLASS = "org.fusesource.jansi.WindowsAnsiOutputStream";
     private static ConsoleManagerFactory factory = new ConsoleManagerFactory();
     private static final Target DEFAULT_TARGET = Target.SYSTEM_OUT;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java
index 85e132e..ceade7f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import java.io.Serializable;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.logging.log4j.Logger;
@@ -28,9 +27,7 @@ import org.apache.logging.log4j.status.StatusLogger;
 /**
  *
  */
-public class DefaultErrorHandler implements ErrorHandler, Serializable {
-
-    private static final long serialVersionUID = 1L;
+public class DefaultErrorHandler implements ErrorHandler {
 
     private static final Logger LOGGER = StatusLogger.getLogger();
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
index 1011e29..b467d15 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
@@ -44,8 +44,6 @@ import org.apache.logging.log4j.core.util.Constants;
 @Plugin(name = "Failover", category = "Core", elementType = "appender", printObject = true)
 public final class FailoverAppender extends AbstractAppender {
 
-    private static final long serialVersionUID = 1L;
-
     private static final int DEFAULT_INTERVAL_SECONDS = 60;
 
     private final String primaryRef;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
index d415ce2..587ba80 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
@@ -39,7 +39,6 @@ import org.apache.logging.log4j.core.util.Integers;
 @Plugin(name = "File", category = "Core", elementType = "appender", printObject = true)
 public final class FileAppender extends AbstractOutputStreamAppender<FileManager> {
 
-    private static final long serialVersionUID = 1L;
     private static final int DEFAULT_BUFFER_SIZE = 8192;
     private final String fileName;
     private final Advertiser advertiser;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
index 365f6db..a3cb25c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
@@ -42,8 +42,6 @@ import org.apache.logging.log4j.core.util.Integers;
 @Plugin(name = "MemoryMappedFile", category = "Core", elementType = "appender", printObject = true)
 public final class MemoryMappedFileAppender extends AbstractOutputStreamAppender<MemoryMappedFileManager> {
 
-    private static final long serialVersionUID = 1L;
-
     private static final int BIT_POSITION_1GB = 30; // 2^30 ~= 1GB
     private static final int MAX_REGION_LENGTH = 1 << BIT_POSITION_1GB;
     private static final int MIN_REGION_LENGTH = 256;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamAppender.java
index 8afb9b8..53881bd 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamAppender.java
@@ -135,8 +135,6 @@ public final class OutputStreamAppender extends AbstractOutputStreamAppender<Out
 
     private static OutputStreamManagerFactory factory = new OutputStreamManagerFactory();
 
-    private static final long serialVersionUID = 1L;
-
     /**
      * Creates an OutputStream Appender.
      * 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java
index c2aaaab..8bcf8e2 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java
@@ -40,8 +40,6 @@ import org.apache.logging.log4j.core.util.Integers;
 @Plugin(name = "RandomAccessFile", category = "Core", elementType = "appender", printObject = true)
 public final class RandomAccessFileAppender extends AbstractOutputStreamAppender<RandomAccessFileManager> {
 
-    private static final long serialVersionUID = 1L;
-
     private final String fileName;
     private Object advertisement;
     private final Advertiser advertiser;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
index 896777d..8332953 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
@@ -46,7 +46,6 @@ import org.apache.logging.log4j.core.util.Integers;
 public final class RollingFileAppender extends AbstractOutputStreamAppender<RollingFileManager> {
 
     private static final int DEFAULT_BUFFER_SIZE = 8192;
-    private static final long serialVersionUID = 1L;
 
     private final String fileName;
     private final String filePattern;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
index 419a4d5..21cff5b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java
@@ -25,7 +25,6 @@ import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy;
-import org.apache.logging.log4j.core.appender.rolling.RollingFileManager;
 import org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager;
 import org.apache.logging.log4j.core.appender.rolling.RolloverStrategy;
 import org.apache.logging.log4j.core.appender.rolling.TriggeringPolicy;
@@ -47,8 +46,6 @@ import org.apache.logging.log4j.core.util.Integers;
 @Plugin(name = "RollingRandomAccessFile", category = "Core", elementType = "appender", printObject = true)
 public final class RollingRandomAccessFileAppender extends AbstractOutputStreamAppender<RollingRandomAccessFileManager> {
 
-    private static final long serialVersionUID = 1L;
-
     private final String fileName;
     private final String filePattern;
     private final Object advertisement;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java
index 28edd24..aed1153 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SmtpAppender.java
@@ -55,7 +55,6 @@ import org.apache.logging.log4j.core.util.Booleans;
 @Plugin(name = "SMTP", category = "Core", elementType = "appender", printObject = true)
 public final class SmtpAppender extends AbstractAppender {
 
-    private static final long serialVersionUID = 1L;
     private static final int DEFAULT_BUFFER_SIZE = 512;
 
     /** The SMTP Manager */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
index 87a9b7a..4a97189 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
@@ -45,8 +45,6 @@ import org.apache.logging.log4j.core.util.Booleans;
 @Plugin(name = "Socket", category = "Core", elementType = "appender", printObject = true)
 public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketManager> {
 
-    private static final long serialVersionUID = 1L;
-
     private final Object advertisement;
     private final Advertiser advertiser;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
index a7881e1..df60764 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
@@ -44,7 +44,6 @@ import org.apache.logging.log4j.util.EnglishEnums;
 @Plugin(name = "Syslog", category = "Core", elementType = "appender", printObject = true)
 public class SyslogAppender extends SocketAppender {
 
-    private static final long serialVersionUID = 1L;
     protected static final String RFC5424 = "RFC5424";
 
     protected SyslogAppender(final String name, final Layout<? extends Serializable> layout, final Filter filter,

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/WriterAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/WriterAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/WriterAppender.java
index e3d8ecb..b6e363a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/WriterAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/WriterAppender.java
@@ -128,8 +128,6 @@ public final class WriterAppender extends AbstractWriterAppender<WriterManager>
 
     private static WriterManagerFactory factory = new WriterManagerFactory();
 
-    private static final long serialVersionUID = 1L;
-
     /**
      * Creates a WriterAppender.
      * 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppender.java
index f58100f..326d47f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppender.java
@@ -36,7 +36,6 @@ import org.apache.logging.log4j.core.appender.AppenderLoggingException;
  * @param <T> Specifies which type of {@link AbstractDatabaseManager} this Appender requires.
  */
 public abstract class AbstractDatabaseAppender<T extends AbstractDatabaseManager> extends AbstractAppender {
-    private static final long serialVersionUID = 1L;
 
     private final ReadWriteLock lock = new ReentrantReadWriteLock();
     private final Lock readLock = lock.readLock();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
index d1c9e06..dbee74f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
@@ -66,7 +66,6 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf
     // this is within the MaxInlineSize threshold and makes these methods candidates for
     // immediate inlining instead of waiting until they are designated "hot enough".
 
-    private static final long serialVersionUID = 1L;
     private static final StatusLogger LOGGER = StatusLogger.getLogger();
     private static final Clock CLOCK = ClockFactory.getClock(); // not reconfigurable
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
index f7252fb..430d6c9 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
@@ -68,8 +68,6 @@ import org.apache.logging.log4j.util.Strings;
 @Plugin(name = "asyncLogger", category = Node.CATEGORY, printObject = true)
 public class AsyncLoggerConfig extends LoggerConfig {
 
-    private static final long serialVersionUID = 1L;
-
     private AsyncLoggerConfigDelegate delegate;
 
     protected AsyncLoggerConfig(final String name,
@@ -195,8 +193,6 @@ public class AsyncLoggerConfig extends LoggerConfig {
     @Plugin(name = "asyncRoot", category = "Core", printObject = true)
     public static class RootLogger extends LoggerConfig {
 
-        private static final long serialVersionUID = 1L;
-
         @PluginFactory
         public static LoggerConfig createLogger(
                 @PluginAttribute("additivity") final String additivity,

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java
index 2e075e0..a256238 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java
@@ -31,8 +31,6 @@ import org.apache.logging.log4j.status.StatusLogger;
  */
 public class AsyncLoggerContext extends LoggerContext {
 
-    private static final long serialVersionUID = 1L;
-
     private final AsyncLoggerDisruptor loggerDisruptor;
 
     public AsyncLoggerContext(final String name) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
index 9974917..30a3652 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
@@ -16,6 +16,24 @@
  */
 package org.apache.logging.log4j.core.config;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.Filter;
@@ -47,31 +65,11 @@ import org.apache.logging.log4j.core.util.NanoClock;
 import org.apache.logging.log4j.core.util.WatchManager;
 import org.apache.logging.log4j.util.PropertiesUtil;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-
 /**
  * The base Configuration. Many configuration implementations will extend this class.
  */
 public abstract class AbstractConfiguration extends AbstractFilterable implements Configuration {
 
-    private static final long serialVersionUID = 1L;
-
     private static final int BUF_SIZE = 16384;
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
index 175c9e1..6b91bd6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
@@ -31,7 +31,6 @@ import org.apache.logging.log4j.util.PerformanceSensitive;
  * Wraps an {@link Appender} with details an appender implementation shouldn't need to know about.
  */
 public class AppenderControl extends AbstractFilterable {
-    private static final long serialVersionUID = 1L;
 
     private final ThreadLocal<AppenderControl> recursive = new ThreadLocal<>();
     private final Appender appender;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
index 52b9e18..ed2c277 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
@@ -35,7 +35,6 @@ import java.util.concurrent.TimeUnit;
 public class ConfigurationScheduler extends AbstractLifeCycle {
 
     private static final Logger LOGGER = StatusLogger.getLogger();
-    private static final long serialVersionUID = 4570411889877332287L;
     private ScheduledExecutorService executorService;
 
     private int scheduledItems = 0;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
index 76a8f7d..e186c44 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
@@ -39,8 +39,6 @@ public class DefaultConfiguration extends AbstractConfiguration {
      */
     public static final String DEFAULT_PATTERN = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n";
 
-    private static final long serialVersionUID = 1L;
-
     /**
      * Constructor to create the default configuration.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
index 1d0f530..ee100b4 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
@@ -54,7 +54,6 @@ import org.apache.logging.log4j.util.Strings;
 public class LoggerConfig extends AbstractFilterable {
 
     public static final String ROOT = "root";
-    private static final long serialVersionUID = 1L;
     private static LogEventFactory LOG_EVENT_FACTORY = null;
 
     private List<AppenderRef> appenderRefs = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/config/NullConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/NullConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/NullConfiguration.java
index 5f58a79..9b04b50 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/NullConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/NullConfiguration.java
@@ -27,7 +27,6 @@ public class NullConfiguration extends AbstractConfiguration {
      * Name of this configuration.
      */
     public static final String NULL_NAME = "Null";
-    private static final long serialVersionUID = 1L;
 
     public NullConfiguration() {
         super(ConfigurationSource.NULL_SOURCE);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilter.java
index 26f0a84..52ee030 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilter.java
@@ -31,8 +31,6 @@ import org.apache.logging.log4j.message.Message;
  *
  */
 public abstract class AbstractFilter extends AbstractLifeCycle implements Filter {
-    
-    private static final long serialVersionUID = 1L;
 
     /**
      * The onMatch Result.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java
index 00cf308..859a5aa 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/AbstractFilterable.java
@@ -27,8 +27,6 @@ import org.apache.logging.log4j.core.LogEvent;
  */
 public abstract class AbstractFilterable extends AbstractLifeCycle implements Filterable {
 
-    private static final long serialVersionUID = 1L;
-
     /**
      * May be null.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java
index 9cc107b..8c78d1d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java
@@ -56,8 +56,6 @@ import org.apache.logging.log4j.message.Message;
 @Plugin(name = "BurstFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public final class BurstFilter extends AbstractFilter {
 
-    private static final long serialVersionUID = 1L;
-
     private static final long NANOS_IN_SECONDS = 1000000000;
 
     private static final int DEFAULT_RATE = 10;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
index 5ff4a56..5fe084c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
@@ -40,8 +40,6 @@ import org.apache.logging.log4j.message.Message;
 @Plugin(name = "filters", category = Node.CATEGORY, printObject = true)
 public final class CompositeFilter extends AbstractLifeCycle implements Iterable<Filter>, Filter {
 
-    private static final long serialVersionUID = 1L;
-
     private final List<Filter> filters;
 
     private CompositeFilter() {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
index 7e32d20..65d8ffa 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
@@ -40,8 +40,6 @@ import org.apache.logging.log4j.message.Message;
 @Plugin(name = "DynamicThresholdFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public final class DynamicThresholdFilter extends AbstractFilter {
 
-    private static final long serialVersionUID = 1L;
-
     /**
      * Create the DynamicThresholdFilter.
      * @param key The name of the key to compare.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/LevelRangeFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/LevelRangeFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/LevelRangeFilter.java
index 52dcdbd..58cb257 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/LevelRangeFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/LevelRangeFilter.java
@@ -39,8 +39,6 @@ import org.apache.logging.log4j.message.Message;
 @Plugin(name = "LevelRangeFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public final class LevelRangeFilter extends AbstractFilter {
 
-    private static final long serialVersionUID = 1L;
-
     /**
      * Create a ThresholdFilter.
      * 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
index 89ecfe6..09afb91 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
@@ -42,8 +42,6 @@ import org.apache.logging.log4j.message.Message;
 @Plugin(name = "MapFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public class MapFilter extends AbstractFilter {
 
-    private static final long serialVersionUID = 1L;
-
     private final Map<String, List<String>> map;
 
     private final boolean isAnd;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MarkerFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MarkerFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MarkerFilter.java
index 49203f2..f8d736f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MarkerFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MarkerFilter.java
@@ -34,8 +34,6 @@ import org.apache.logging.log4j.message.Message;
 @Plugin(name = "MarkerFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public final class MarkerFilter extends AbstractFilter {
 
-    private static final long serialVersionUID = 1L;
-
     private final String name;
 
     private MarkerFilter(final String name, final Result onMatch, final Result onMismatch) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java
index 18034e4..0e20ab0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java
@@ -44,8 +44,6 @@ import org.apache.logging.log4j.message.Message;
 @Plugin(name = "RegexFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public final class RegexFilter extends AbstractFilter {
 
-    private static final long serialVersionUID = 1L;
-
     private static final int DEFAULT_PATTERN_FLAGS = 0;
     private final Pattern pattern;
     private final boolean useRawMessage;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ScriptFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ScriptFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ScriptFilter.java
index 9c50d3c..7607f26 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ScriptFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ScriptFilter.java
@@ -43,7 +43,6 @@ import org.apache.logging.log4j.status.StatusLogger;
 @Plugin(name = "ScriptFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public final class ScriptFilter extends AbstractFilter {
 
-    private static final long serialVersionUID = 1L;
     private static org.apache.logging.log4j.Logger logger = StatusLogger.getLogger();
 
     private final AbstractScript script;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/StructuredDataFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/StructuredDataFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/StructuredDataFilter.java
index a710cd4..1feed36 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/StructuredDataFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/StructuredDataFilter.java
@@ -41,8 +41,6 @@ import org.apache.logging.log4j.message.StructuredDataMessage;
 @Plugin(name = "StructuredDataFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public final class StructuredDataFilter extends MapFilter {
 
-    private static final long serialVersionUID = 1L;
-
     private StructuredDataFilter(final Map<String, List<String>> map, final boolean oper, final Result onMatch,
                                  final Result onMismatch) {
         super(map, oper, onMatch, onMismatch);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
index 4c63f17..f6d1c5c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
@@ -42,8 +42,6 @@ import org.apache.logging.log4j.message.Message;
 @Plugin(name = "ThreadContextMapFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public class ThreadContextMapFilter extends MapFilter {
 
-    private static final long serialVersionUID = 1L;
-
     private final String key;
     private final String value;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThresholdFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThresholdFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThresholdFilter.java
index 02246eb..db7acea 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThresholdFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThresholdFilter.java
@@ -38,8 +38,6 @@ import org.apache.logging.log4j.message.Message;
 @Plugin(name = "ThresholdFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public final class ThresholdFilter extends AbstractFilter {
 
-    private static final long serialVersionUID = 1L;
-
     private final Level level;
 
     private ThresholdFilter(final Level level, final Result onMatch, final Result onMismatch) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
index bd0fa18..41d22d6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
@@ -34,8 +34,6 @@ import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 @Plugin(name = "TimeFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
 public final class TimeFilter extends AbstractFilter {
 
-    private static final long serialVersionUID = 1L;
-
     /**
      * Length of hour in milliseconds.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
index c5b0e90..ed1a70a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractCsvLayout.java
@@ -34,7 +34,6 @@ public abstract class AbstractCsvLayout extends AbstractStringLayout {
     protected static final String DEFAULT_CHARSET = "UTF-8";
     protected static final String DEFAULT_FORMAT = "Default";
     private static final String CONTENT_TYPE = "text/csv";
-    private static final long serialVersionUID = 1L;
 
     private final CSVFormat format;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java
index ced02e2..7cbc798 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java
@@ -33,7 +33,6 @@ abstract class AbstractJacksonLayout extends AbstractStringLayout {
 
     protected static final String DEFAULT_EOL = "\r\n";
     protected static final String COMPACT_EOL = Strings.EMPTY;
-    private static final long serialVersionUID = 1L;
 
     protected final String eol;
     protected final ObjectWriter objectWriter;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractLayout.java
index 8e0d201..f0a58b6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractLayout.java
@@ -33,15 +33,13 @@ import org.apache.logging.log4j.status.StatusLogger;
  * @param <T>
  *            The Class that the Layout will format the LogEvent into.
  */
-public abstract class AbstractLayout<T extends Serializable> implements Layout<T>, Serializable {
+public abstract class AbstractLayout<T extends Serializable> implements Layout<T> {
 
     /**
      * Allow subclasses access to the status logger without creating another instance.
      */
     protected static final Logger LOGGER = StatusLogger.getLogger();
 
-    private static final long serialVersionUID = 1L;
-
     /**
      * The current Configuration.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
index 91e2a2f..607d965 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
@@ -16,9 +16,6 @@
  */
 package org.apache.logging.log4j.core.layout;
 
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
 import java.io.UnsupportedEncodingException;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
@@ -59,8 +56,6 @@ public abstract class AbstractStringLayout extends AbstractLayout<String> implem
      */
     protected static final int DEFAULT_STRING_BUILDER_SIZE = 1024;
 
-    private static final long serialVersionUID = 1L;
-
     private final static ThreadLocal<StringBuilder> threadLocal = new ThreadLocal<>();
 
     /**
@@ -194,12 +189,6 @@ public abstract class AbstractStringLayout extends AbstractLayout<String> implem
         return headerSerializer;
     }
 
-    private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        final String csName = in.readUTF();
-        charset = Charset.forName(csName);
-    }
-
     protected byte[] serializeToBytes(final Serializer serializer, byte[] defaultValue) {
         final String serializable = serializeToString(serializer);
         if (serializer == null) {
@@ -230,9 +219,4 @@ public abstract class AbstractStringLayout extends AbstractLayout<String> implem
         return getBytes(toSerializable(event));
     }
 
-    private void writeObject(final ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeUTF(charset.name());
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
index dd751f9..1a3d6ad 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
@@ -42,8 +42,6 @@ import org.apache.logging.log4j.status.StatusLogger;
 @Plugin(name = "CsvLogEventLayout", category = Node.CATEGORY, elementType = Layout.ELEMENT_TYPE, printObject = true)
 public class CsvLogEventLayout extends AbstractCsvLayout {
 
-    private static final long serialVersionUID = 1L;
-    
     public static CsvLogEventLayout createDefaultLayout() {
         return new CsvLogEventLayout(null, Charset.forName(DEFAULT_CHARSET), CSVFormat.valueOf(DEFAULT_FORMAT), null, null);
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvParameterLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvParameterLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvParameterLayout.java
index 324a08a..9c792e7 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvParameterLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvParameterLayout.java
@@ -51,8 +51,6 @@ import org.apache.logging.log4j.status.StatusLogger;
 @Plugin(name = "CsvParameterLayout", category = Node.CATEGORY, elementType = Layout.ELEMENT_TYPE, printObject = true)
 public class CsvParameterLayout extends AbstractCsvLayout {
 
-    private static final long serialVersionUID = 1L;
-    
     public static AbstractCsvLayout createDefaultLayout() {
         return new CsvParameterLayout(null, Charset.forName(DEFAULT_CHARSET), CSVFormat.valueOf(DEFAULT_FORMAT), null, null);
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
index 0b3effa..7462818 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
@@ -101,7 +101,6 @@ public final class GelfLayout extends AbstractStringLayout {
     private static final char Q = '\"';
     private static final String QC = "\",";
     private static final String QU = "\"_";
-    private static final long serialVersionUID = 1L;
     private static final BigDecimal TIME_DIVISOR = new BigDecimal(1000);
 
     private final KeyValuePair[] additionalFields;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
index c2bb4c6..e3e60d9 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
@@ -55,7 +55,6 @@ public final class HtmlLayout extends AbstractStringLayout {
      */
     public static final String DEFAULT_FONT_FAMILY = "arial,sans-serif";
 
-    private static final long serialVersionUID = 1L;
     private static final String TRACE_PREFIX = "<br />&nbsp;&nbsp;&nbsp;&nbsp;";
     private static final String REGEXP = Constants.LINE_SEPARATOR.equals("\n") ? "\n" : Constants.LINE_SEPARATOR + "|\n";
     private static final String DEFAULT_TITLE = "Log4j Log Messages";

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JsonLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JsonLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JsonLayout.java
index 28dd0a5..fa7a028 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JsonLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JsonLayout.java
@@ -807,8 +807,6 @@ public final class JsonLayout extends AbstractJacksonLayout {
 
     static final String CONTENT_TYPE = "application/json";
 
-    private static final long serialVersionUID = 1L;
-
     protected JsonLayout(final Configuration config, final boolean locationInfo, final boolean properties,
             final boolean complete, final boolean compact, final boolean eventEol, final String headerPattern,
             final String footerPattern, final Charset charset) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternMatch.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternMatch.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternMatch.java
index 2633c54..2c6803d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternMatch.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternMatch.java
@@ -17,25 +17,21 @@
 
 package org.apache.logging.log4j.core.layout;
 
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 
-import java.io.InvalidObjectException;
-import java.io.ObjectInputStream;
-import java.io.ObjectStreamException;
-import java.io.Serializable;
-
 /**
  * PatternMatch configuration item.
  *
  * @since 2.4.1 implements {@link Serializable}
  */
 @Plugin(name = "PatternMatch", category = Node.CATEGORY, printObject = true)
-public final class PatternMatch implements Serializable {
-
-    private static final long serialVersionUID = 4331228262821046877L;
+public final class PatternMatch {
 
     private final String key;
     private final String pattern;
@@ -76,14 +72,6 @@ public final class PatternMatch implements Serializable {
         return new Builder();
     }
 
-    protected Object writeReplace() throws ObjectStreamException {
-        return newBuilder().setKey(this.key).setPattern(this.pattern);
-    }
-
-    private void readObject(final ObjectInputStream stream) throws InvalidObjectException {
-        throw new InvalidObjectException("Builder proxy required");
-    }
-
     public static class Builder implements org.apache.logging.log4j.core.util.Builder<PatternMatch>, Serializable {
 
         private static final long serialVersionUID = 1L;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
index e522d38..b450940 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
@@ -86,8 +86,6 @@ public final class Rfc5424Layout extends AbstractStringLayout {
      */
     public static final String DEFAULT_MDCID = "mdc";
 
-    private static final long serialVersionUID = 1L;
-
     private static final String LF = "\n";
     private static final int TWO_DIGITS = 10;
     private static final int THREE_DIGITS = 100;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SerializedLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SerializedLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SerializedLayout.java
index 6d2349d..65293bd 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SerializedLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SerializedLayout.java
@@ -33,8 +33,6 @@ import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 @Plugin(name = "SerializedLayout", category = Node.CATEGORY, elementType = Layout.ELEMENT_TYPE, printObject = true)
 public final class SerializedLayout extends AbstractLayout<LogEvent> {
 
-    private static final long serialVersionUID = 1L;
-
     private static byte[] serializedHeader;
 
     static {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SyslogLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SyslogLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SyslogLayout.java
index 67c797d..d53bc15 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SyslogLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SyslogLayout.java
@@ -48,8 +48,6 @@ public final class SyslogLayout extends AbstractStringLayout {
      */
     public static final Pattern NEWLINE_PATTERN = Pattern.compile("\\r?\\n");
 
-    private static final long serialVersionUID = 1L;
-
     private final Facility facility;
     private final boolean includeNewLine;
     private final String escapeNewLine;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/XmlLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/XmlLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/XmlLayout.java
index 8e01bd3..4364d9d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/XmlLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/XmlLayout.java
@@ -192,8 +192,6 @@ import org.apache.logging.log4j.core.jackson.XmlConstants;
 @Plugin(name = "XmlLayout", category = Node.CATEGORY, elementType = Layout.ELEMENT_TYPE, printObject = true)
 public final class XmlLayout extends AbstractJacksonLayout {
 
-    private static final long serialVersionUID = 1L;
-
     private static final String ROOT_TAG = "Events";
 
     protected XmlLayout(final boolean locationInfo, final boolean properties, final boolean complete, final boolean compact, final Charset charset) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/test/java/org/apache/logging/log4j/core/BasicConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/BasicConfigurationFactory.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/BasicConfigurationFactory.java
index ab0f25d..844192f 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/BasicConfigurationFactory.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/BasicConfigurationFactory.java
@@ -47,7 +47,6 @@ public class BasicConfigurationFactory extends ConfigurationFactory {
 
     public class BasicConfiguration extends AbstractConfiguration {
 
-        private static final long serialVersionUID = 1L;
         private static final String DEFAULT_LEVEL = "org.apache.logging.log4j.level";
 
         public BasicConfiguration() {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java
index 48ab06f..a558460 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java
@@ -159,8 +159,6 @@ public class AbstractDatabaseAppenderTest {
     private static abstract class LocalAbstractDatabaseAppender extends
             AbstractDatabaseAppender<LocalAbstractDatabaseManager> {
 
-        private static final long serialVersionUID = 1L;
-
         public LocalAbstractDatabaseAppender(final String name, final Filter filter, final boolean exceptionSuppressed,
                                              final LocalAbstractDatabaseManager manager) {
             super(name, filter, exceptionSuppressed, manager);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterSerializationTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterSerializationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterSerializationTest.java
deleted file mode 100644
index deff0fb..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterSerializationTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.logging.log4j.core.filter;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collection;
-
-import org.apache.logging.log4j.AbstractSerializationTest;
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.core.Filter.Result;
-import org.apache.logging.log4j.core.util.KeyValuePair;
-import org.junit.runners.Parameterized.Parameters;
-
-public class DynamicThresholdFilterSerializationTest extends AbstractSerializationTest {
-
-    @Parameters
-    public static Collection<Object[]> data() {
-        final KeyValuePair[] pairs = new KeyValuePair[] {
-                new KeyValuePair("testuser", "DEBUG"),
-                new KeyValuePair("JohnDoe", "warn") };
-        final KeyValuePair[] pairsEmpty = new KeyValuePair[0];
-        return Arrays.asList(new Object[][] {
-                { DynamicThresholdFilter.createFilter("userid", pairsEmpty, Level.ERROR, Result.ACCEPT, Result.DENY) },
-                { DynamicThresholdFilter.createFilter("userid", pairsEmpty, Level.ERROR, null, null) },
-                { DynamicThresholdFilter.createFilter("userid", pairs, Level.ERROR, null, null) } });
-    }
-
-    public DynamicThresholdFilterSerializationTest(final Serializable serializable) {
-        super(serializable);
-    }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/SerializableLayoutTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/SerializableLayoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/SerializableLayoutTest.java
deleted file mode 100644
index d470f07..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/SerializableLayoutTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.layout;
-
-import org.apache.logging.log4j.core.util.Constants;
-import org.apache.logging.log4j.test.layout.SerializableLayout;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.nio.charset.Charset;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-
-/**
- * Verifies an implementation of AbstractStringLayout will serialize and deserialize properly to address LOG4J2-1099.
- */
-public class SerializableLayoutTest {
-
-    public static final String HEADER = "Test Header" + Constants.LINE_SEPARATOR;
-    public static final String FOOTER = "Test Footer" + Constants.LINE_SEPARATOR;
-    public static final String MESSAGE_PREFIX = "TEST PREFIX: ";
-
-    @Rule
-    public TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-    @Test
-    public void testPluginObjectSerialization() throws Exception {
-        final SerializableLayout originalLayout = new SerializableLayout(MESSAGE_PREFIX, Charset.defaultCharset(),
-                HEADER.getBytes(), FOOTER.getBytes());
-        final File serializedFile = temporaryFolder.newFile();
-        try (final FileOutputStream fileOutputStream = new FileOutputStream(serializedFile)) {
-            final ObjectOutputStream out = new ObjectOutputStream(fileOutputStream);
-            out.writeObject(originalLayout);
-        }
-        SerializableLayout serializedLayout;
-        try (final FileInputStream fileInputStream = new FileInputStream(serializedFile)) {
-            final ObjectInputStream in = new ObjectInputStream(fileInputStream);
-            serializedLayout = (SerializableLayout) in.readObject();
-        }
-        assertEquals(originalLayout.getMessagePrefix(), serializedLayout.getMessagePrefix());
-        assertEquals(originalLayout.getCharset(), serializedLayout.getCharset());
-        assertArrayEquals(originalLayout.getHeader(), serializedLayout.getHeader());
-        assertArrayEquals(originalLayout.getFooter(), serializedLayout.getFooter());
-    }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/AlwaysFailAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/AlwaysFailAppender.java b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/AlwaysFailAppender.java
index 1a9138e..c2b51e3 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/AlwaysFailAppender.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/AlwaysFailAppender.java
@@ -29,8 +29,6 @@ import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 @Plugin(name="AlwaysFail", category ="Core",elementType="appender",printObject=true)
 public class AlwaysFailAppender extends AbstractAppender {
 
-    private static final long serialVersionUID = 1L;
-
     private AlwaysFailAppender(final String name) {
         super(name, null, null, false);
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/test/java/org/apache/logging/log4j/test/layout/BasicLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/test/layout/BasicLayout.java b/log4j-core/src/test/java/org/apache/logging/log4j/test/layout/BasicLayout.java
index b6baf87..4bda27e 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/test/layout/BasicLayout.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/test/layout/BasicLayout.java
@@ -31,7 +31,6 @@ import org.apache.logging.log4j.core.util.Constants;
 @Plugin(name = "BasicLayout", category = "Core", elementType = "layout", printObject = true)
 public class BasicLayout extends AbstractStringLayout {
 
-    private static final long serialVersionUID = 1L;
     private static final String HEADER = "Header" + Constants.LINE_SEPARATOR;
 
     public BasicLayout(final Charset charset) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-core/src/test/java/org/apache/logging/log4j/test/layout/SerializableLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/test/layout/SerializableLayout.java b/log4j-core/src/test/java/org/apache/logging/log4j/test/layout/SerializableLayout.java
deleted file mode 100644
index 114c7e3..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/test/layout/SerializableLayout.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.test.layout;
-
-import java.nio.charset.Charset;
-
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.layout.AbstractStringLayout;
-import org.apache.logging.log4j.core.util.Constants;
-
-/**
- * Test Layout for verification AbstractStringLayout subclass serialization compatibility.
- */
-public class SerializableLayout extends AbstractStringLayout {
-
-    private static final long serialVersionUID = 1L;
-
-    private final String messagePrefix;
-
-    public SerializableLayout(final String messagePrefix, Charset charset, final byte[] header, final byte[] footer) {
-        super(charset, header, footer);
-        this.messagePrefix = messagePrefix;
-    }
-
-    @Override
-    public String toSerializable(final LogEvent event) {
-        return messagePrefix + event.getMessage().getFormattedMessage() + Constants.LINE_SEPARATOR;
-    }
-
-    public String getMessagePrefix() {
-        return messagePrefix;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
----------------------------------------------------------------------
diff --git a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
index 1c466ef..7c5e364 100644
--- a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
+++ b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
@@ -40,7 +40,6 @@ import org.apache.logging.log4j.core.util.Integers;
 @Plugin(name = "Flume", category = "Core", elementType = "appender", printObject = true)
 public final class FlumeAppender extends AbstractAppender implements FlumeEventFactory {
 
-    private static final long serialVersionUID = 1L;
     private static final String[] EXCLUDED_PACKAGES = {"org.apache.flume", "org.apache.avro"};
     private static final int DEFAULT_MAX_DELAY = 60000;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c681953/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlAppender.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlAppender.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlAppender.java
index f1f75f3..bd2deb3 100644
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlAppender.java
+++ b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlAppender.java
@@ -50,7 +50,6 @@ import org.apache.logging.log4j.core.util.Booleans;
  */
 @Plugin(name = "NoSql", category = "Core", elementType = "appender", printObject = true)
 public final class NoSqlAppender extends AbstractDatabaseAppender<NoSqlDatabaseManager<?>> {
-    private static final long serialVersionUID = 1L;
     private final String description;
 
     private NoSqlAppender(final String name, final Filter filter, final boolean ignoreExceptions,


[38/50] [abbrv] logging-log4j2 git commit: Add changelog entry for LOG4J2-1227.

Posted by rp...@apache.org.
Add changelog entry for LOG4J2-1227.

This closes #20


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: a57fc35b97bda2fec4715040f58f048288f5a2b5
Parents: 6362a38
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 21:08:37 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 21:08:37 2016 -0600

----------------------------------------------------------------------
 src/changes/changes.xml | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a57fc35b/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 646a41f..80a67f7 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -184,6 +184,9 @@
       <action issue="LOG4J2-1252" dev="mattsicker" type="add">
         JeroMqAppender should support layouts.
       </action>
+      <action issue="LOG4J2-1227" dev="mattsicker" type="fix" due-to="Olivier Lemasle">
+        NullPointerException in MapLookup.lookup is the event is null.
+      </action>
     </release>
     <release version="2.5" date="2015-12-06" description="GA Release 2.5">
       <action issue="LOG4J2-324" dev="rpopma" type="fix">


[24/50] [abbrv] logging-log4j2 git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/logging-log4j2.git

Posted by rp...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/logging-log4j2.git

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 9c9bc95d348837a1e2e9fdc3619146dba7ebcff7
Parents: 9ebf072 c83366e
Author: ggregory <gg...@apache.org>
Authored: Tue Mar 1 16:56:25 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Tue Mar 1 16:56:25 2016 -0800

----------------------------------------------------------------------
 .../core/async/perftest/SimplePerfTest.java     |  1 -
 .../log4j/core/async/perftest/SimplePerfTest.sh | 22 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[45/50] [abbrv] logging-log4j2 git commit: LOG4J2-1227 - Fix unit test (error in commit 33ee4bfd0)

Posted by rp...@apache.org.
LOG4J2-1227 - Fix unit test (error in commit 33ee4bfd0)


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 51a81f96358e217815185170df19f9f5110be43e
Parents: f030c68
Author: Olivier Lemasle <ol...@apalia.net>
Authored: Thu Mar 3 10:08:08 2016 +0100
Committer: Olivier Lemasle <ol...@apalia.net>
Committed: Thu Mar 3 10:17:04 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/logging/log4j/core/lookup/MapLookupTest.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/51a81f96/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
index 5f26d15..313b527 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
@@ -79,7 +79,7 @@ public class MapLookupTest {
                 .build();
       final MapLookup lookup = new MapLookup(map);
       assertEquals("B", lookup.lookup(event, "A"));
-      assertEquals("B1", lookup.lookup(event, "A"));
+      assertEquals("B1", lookup.lookup(event, "A1"));
     }
 
     @Test


[33/50] [abbrv] logging-log4j2 git commit: LOG4J2-1303 - Add dependency info link to component pages.

Posted by rp...@apache.org.
LOG4J2-1303 - Add dependency info link to component pages.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: ba6105768bf982b4c42403930b09d7d486d43262
Parents: 37ef86b
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 19:44:56 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 19:47:17 2016 -0600

----------------------------------------------------------------------
 log4j-1.2-api/src/site/xdoc/index.xml     | 3 ++-
 log4j-flume-ng/src/site/xdoc/index.xml.vm | 1 +
 log4j-iostreams/src/site/xdoc/index.xml   | 1 +
 log4j-jcl/src/site/xdoc/index.xml         | 3 ++-
 log4j-jmx-gui/src/site/xdoc/index.xml     | 3 ++-
 log4j-jul/src/site/xdoc/index.xml         | 1 +
 log4j-liquibase/src/site/xdoc/index.xml   | 3 ++-
 log4j-nosql/src/site/xdoc/index.xml.vm    | 1 +
 log4j-slf4j-impl/src/site/xdoc/index.xml  | 3 ++-
 log4j-taglib/src/site/xdoc/index.xml      | 3 ++-
 log4j-to-slf4j/src/site/xdoc/index.xml    | 7 ++++---
 log4j-web/src/site/xdoc/index.xml         | 3 ++-
 src/changes/changes.xml                   | 3 +++
 13 files changed, 25 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-1.2-api/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/log4j-1.2-api/src/site/xdoc/index.xml b/log4j-1.2-api/src/site/xdoc/index.xml
index 036ebba..2ae33bf 100644
--- a/log4j-1.2-api/src/site/xdoc/index.xml
+++ b/log4j-1.2-api/src/site/xdoc/index.xml
@@ -35,6 +35,7 @@
         <section name="Requirements">
            <p>
              The Log4j 1.2 bridge is dependent on the Log4j 2 API and implementation.
+             For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
           </p>
         </section>
 
@@ -48,4 +49,4 @@
       </section>
 
     </body>
-</document>
\ No newline at end of file
+</document>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-flume-ng/src/site/xdoc/index.xml.vm
----------------------------------------------------------------------
diff --git a/log4j-flume-ng/src/site/xdoc/index.xml.vm b/log4j-flume-ng/src/site/xdoc/index.xml.vm
index 4f1f05a..f8c9a2f 100644
--- a/log4j-flume-ng/src/site/xdoc/index.xml.vm
+++ b/log4j-flume-ng/src/site/xdoc/index.xml.vm
@@ -237,6 +237,7 @@
         <section name="Requirements">
            <p>
              The Flume Appender requires the Log4J 2 API.
+             For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
           </p>
         </section>
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-iostreams/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/site/xdoc/index.xml b/log4j-iostreams/src/site/xdoc/index.xml
index 188f007..a617b61 100644
--- a/log4j-iostreams/src/site/xdoc/index.xml
+++ b/log4j-iostreams/src/site/xdoc/index.xml
@@ -38,6 +38,7 @@
     <section name="Requirements">
       <p>
         The Log4j IOStreams API extension requires the Log4j 2 API. This component was introduced in Log4j 2.1.
+        For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
       </p>
     </section>
     <section name="Usage">

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-jcl/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/log4j-jcl/src/site/xdoc/index.xml b/log4j-jcl/src/site/xdoc/index.xml
index aa80903..c9b5932 100644
--- a/log4j-jcl/src/site/xdoc/index.xml
+++ b/log4j-jcl/src/site/xdoc/index.xml
@@ -36,6 +36,7 @@
            <p>
              The Commons Logging Bridge is dependent on the Log4j 2 API
              and Commons Logging.
+             For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
           </p>
         </section>
 
@@ -48,4 +49,4 @@
       </section>
 
     </body>
-</document>
\ No newline at end of file
+</document>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-jmx-gui/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/log4j-jmx-gui/src/site/xdoc/index.xml b/log4j-jmx-gui/src/site/xdoc/index.xml
index f732e4b..1497df2 100644
--- a/log4j-jmx-gui/src/site/xdoc/index.xml
+++ b/log4j-jmx-gui/src/site/xdoc/index.xml
@@ -36,6 +36,7 @@
         <section name="Requirements">
            <p>
              The JMX GUI is dependent on Log4j 2 Core.
+             For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
           </p>
         </section>
 
@@ -46,4 +47,4 @@
       </section>
 
     </body>
-</document>
\ No newline at end of file
+</document>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-jul/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/log4j-jul/src/site/xdoc/index.xml b/log4j-jul/src/site/xdoc/index.xml
index b879666..955a44e 100644
--- a/log4j-jul/src/site/xdoc/index.xml
+++ b/log4j-jul/src/site/xdoc/index.xml
@@ -36,6 +36,7 @@
     <section name="Requirements">
       <p>
         The JDK Logging Adapter is dependent on the Log4j API and optionally Log4j Core.
+        For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
       </p>
     </section>
     <section name="Usage">

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-liquibase/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/log4j-liquibase/src/site/xdoc/index.xml b/log4j-liquibase/src/site/xdoc/index.xml
index 46f70ba..3b6d3c6 100644
--- a/log4j-liquibase/src/site/xdoc/index.xml
+++ b/log4j-liquibase/src/site/xdoc/index.xml
@@ -35,6 +35,7 @@
            <p>
              The Log4j 2 Liquibase Binding has a dependency
              on the Log4j 2 API as well as the Liquibase core.
+             For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
           </p>
         </section>
 
@@ -45,4 +46,4 @@
       </section>
 
     </body>
-</document>
\ No newline at end of file
+</document>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-nosql/src/site/xdoc/index.xml.vm
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/site/xdoc/index.xml.vm b/log4j-nosql/src/site/xdoc/index.xml.vm
index 3fb8caf..6b63b12 100644
--- a/log4j-nosql/src/site/xdoc/index.xml.vm
+++ b/log4j-nosql/src/site/xdoc/index.xml.vm
@@ -78,6 +78,7 @@
         <section name="Requirements">
            <p>
              The NoSQL Appenders is dependent on the Log4j 2 API and implementation.
+             For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
           </p>
         </section>
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-slf4j-impl/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/log4j-slf4j-impl/src/site/xdoc/index.xml b/log4j-slf4j-impl/src/site/xdoc/index.xml
index 5b8af06..d875368 100644
--- a/log4j-slf4j-impl/src/site/xdoc/index.xml
+++ b/log4j-slf4j-impl/src/site/xdoc/index.xml
@@ -36,6 +36,7 @@
            <p>
              The Log4j 2 SLF4J Binding has a dependency 
              on the Log4j 2 API as well as the SLF4J API.
+             For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
           </p>
         </section>
 
@@ -54,4 +55,4 @@
       </section>
 
     </body>
-</document>
\ No newline at end of file
+</document>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-taglib/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/log4j-taglib/src/site/xdoc/index.xml b/log4j-taglib/src/site/xdoc/index.xml
index d6938b8..2abd3d3 100644
--- a/log4j-taglib/src/site/xdoc/index.xml
+++ b/log4j-taglib/src/site/xdoc/index.xml
@@ -40,6 +40,7 @@
        <p>
          The Log4j Tag Library requires at least Servlet 2.5 (or Java EE 5), at least
          JSP 2.1 (or Java EE 5), and is dependent on the Log4j 2 API.
+         For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
        </p>
        <p>
          <b><em>Important Note!</em></b> For performance reasons, containers often ignore certain JARs known not to
@@ -80,4 +81,4 @@
      </section>
 
    </body>
-</document>
\ No newline at end of file
+</document>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-to-slf4j/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/log4j-to-slf4j/src/site/xdoc/index.xml b/log4j-to-slf4j/src/site/xdoc/index.xml
index 181c73b..13bbcc9 100644
--- a/log4j-to-slf4j/src/site/xdoc/index.xml
+++ b/log4j-to-slf4j/src/site/xdoc/index.xml
@@ -37,6 +37,7 @@
         <section name="Requirements">
            <p>
              The Log4j 2 to SLF4J adapter is dependent on the Log4j 2 API and the SLF4J API.
+             For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
           </p>
         </section>
 
@@ -46,12 +47,12 @@
           the logging implementation as required.
         </p>
            <p>
-             <b><em>Use of the SLF4J adapter (log4j-to-slf4j-2.0.jar) together with 
-             the SLF4J bridge (log4j-slf4j-impl-2.0.jar) should 
+             <b><em>Use of the SLF4J adapter (log4j-to-slf4j-2.x.jar) together with
+             the SLF4J bridge (log4j-slf4j-impl-2.x.jar) should
              never be attempted as it will cause events to endlessly be routed between
              SLF4J and Log4j 2.</em></b>
           </p>
       </section>
 
     </body>
-</document>
\ No newline at end of file
+</document>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/log4j-web/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/log4j-web/src/site/xdoc/index.xml b/log4j-web/src/site/xdoc/index.xml
index 4d6cd33..94a7b88 100644
--- a/log4j-web/src/site/xdoc/index.xml
+++ b/log4j-web/src/site/xdoc/index.xml
@@ -52,8 +52,9 @@
         <section name="Requirements">
            <p>
              The Web module requires Servlet 2.5 and is dependent on the Log4j 2 API and implementation.
+             For more information, see <a href="../runtime-dependencies.html">Runtime Dependencies</a>.
           </p>
         </section>
 
     </body>
-</document>
\ No newline at end of file
+</document>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ba610576/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 48e5319..2dceed8 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -172,6 +172,9 @@
       <action issue="LOG4J2-1300" dev="mattsicker" type="update">
         Remove serializability from classes that don't need it.
       </action>
+      <action issue="LOG4J2-1303" dev="mattsicker" type="add">
+        Add documentation links to runtime dependencies in each component intro page.
+      </action>
     </release>
     <release version="2.5" date="2015-12-06" description="GA Release 2.5">
       <action issue="LOG4J2-324" dev="rpopma" type="fix">


[17/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id and priority in PatternLayout.

Posted by rp...@apache.org.
[LOG4J2-1299] Add pattern converter for thread id and priority in
PatternLayout.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 585beba1eeebe0ba771ce0e4364954861e1db154
Parents: 1bd8a51
Author: ggregory <gg...@apache.org>
Authored: Tue Mar 1 10:43:21 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Tue Mar 1 10:43:21 2016 -0800

----------------------------------------------------------------------
 .../logging/log4j/core/AbstractLogEvent.java    | 10 ++
 .../org/apache/logging/log4j/core/LogEvent.java | 16 +++-
 .../db/jpa/AbstractLogEventWrapperEntity.java   | 20 ++++
 .../appender/db/jpa/BasicLogEventEntity.java    | 22 +++++
 .../logging/log4j/core/async/AsyncLogger.java   | 15 +--
 .../log4j/core/async/RingBufferLogEvent.java    | 28 +++++-
 .../async/RingBufferLogEventTranslator.java     | 28 +++---
 .../core/async/ThreadNameCachingStrategy.java   | 35 ++++++-
 .../logging/log4j/core/impl/Log4jLogEvent.java  | 96 +++++++++++++++-----
 .../log4j/core/jackson/LogEventMixIn.java       | 10 ++
 .../log4j/core/layout/CsvLogEventLayout.java    |  2 +
 .../core/pattern/ThreadIdPatternConverter.java  | 61 +++++++++++++
 .../pattern/ThreadNamePatternConverter.java     | 59 ++++++++++++
 .../core/pattern/ThreadPatternConverter.java    | 59 ------------
 .../pattern/ThreadPriorityPatternConverter.java | 61 +++++++++++++
 .../apache/logging/log4j/core/LogEventTest.java |  2 +
 .../core/appender/db/jpa/JpaH2AppenderTest.java |  2 +-
 .../db/jpa/JpaHyperSqlAppenderTest.java         |  2 +-
 .../core/appender/db/jpa/TestBaseEntity.java    | 12 +++
 .../core/async/RingBufferLogEventTest.java      | 10 +-
 .../log4j/core/impl/Log4jLogEventTest.java      |  3 +-
 .../log4j/core/net/server/ThreadIdFilter.java   | 40 ++++++++
 .../core/net/server/ThreadPriorityFilter.java   | 40 ++++++++
 .../log4j/core/pattern/PatternParserTest.java   | 37 +++++++-
 .../pattern/ThreadIdPatternConverterTest.java   | 39 ++++++++
 .../pattern/ThreadNamePatternConverterTest.java |  2 +-
 .../ThreadPriorityPatternConverterTest.java     | 39 ++++++++
 .../log4j/flume/appender/FlumeEvent.java        | 18 ++++
 .../nosql/appender/NoSqlDatabaseManager.java    |  2 +
 .../appender/NoSqlDatabaseManagerTest.java      |  6 ++
 src/changes/changes.xml                         |  3 +
 src/site/xdoc/manual/layouts.xml.vm             | 28 +++++-
 32 files changed, 689 insertions(+), 118 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
index cd1b4e9..489a156 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
@@ -78,11 +78,21 @@ public abstract class AbstractLogEvent implements LogEvent {
     }
 
     @Override
+    public long getThreadId() {
+        return 0;
+    }
+
+    @Override
     public String getThreadName() {
         return null;
     }
 
     @Override
+    public int getThreadPriority() {
+        return 0;
+    }
+
+    @Override
     public Throwable getThrown() {
         return null;
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
index e89f6e5..422a2d1 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
@@ -106,7 +106,7 @@ public interface LogEvent extends Serializable {
     StackTraceElement getSource();
 
     /**
-     * Gets thread name.
+     * Gets the thread name.
      *
      * @return thread name, may be null.
      * TODO guess this could go into a thread context object too. (RG) Why?
@@ -114,6 +114,20 @@ public interface LogEvent extends Serializable {
     String getThreadName();
 
     /**
+     * Gets the thread ID.
+     *
+     * @return thread ID.
+     */
+    long getThreadId();
+
+    /**
+     * Gets the thread priority.
+     *
+     * @return thread priority.
+     */
+    int getThreadPriority();
+
+    /**
      * Gets throwable associated with logging request.
      *
      * <p>Convenience method for {@code ThrowableProxy.getThrowable();}</p>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java
index ae256ef..edddfb4 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java
@@ -159,6 +159,16 @@ public abstract class AbstractLogEventWrapperEntity implements LogEvent {
     /**
      * A no-op mutator to satisfy JPA requirements, as this entity is write-only.
      *
+     * @param threadId Ignored.
+     */
+    @SuppressWarnings("unused")
+    public void setThreadId(final long threadId) {
+        // this entity is write-only
+    }
+
+    /**
+     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.
+     *
      * @param threadName Ignored.
      */
     @SuppressWarnings("unused")
@@ -169,6 +179,16 @@ public abstract class AbstractLogEventWrapperEntity implements LogEvent {
     /**
      * A no-op mutator to satisfy JPA requirements, as this entity is write-only.
      *
+     * @param threadPriority Ignored.
+     */
+    @SuppressWarnings("unused")
+    public void setThreadPriority(final int threadPriority) {
+        // this entity is write-only
+    }
+
+    /**
+     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.
+     *
      * @param nanoTime Ignored.
      */
     @SuppressWarnings("unused")

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java
index a732e53..8fc49dc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java
@@ -147,6 +147,28 @@ public abstract class BasicLogEventEntity extends AbstractLogEventWrapperEntity
     }
 
     /**
+     * Gets the thread ID. Annotated with {@code @Basic}.
+     *
+     * @return the thread ID.
+     */
+    @Override
+    @Basic
+    public long getThreadId() {
+        return this.getWrappedEvent().getThreadId();
+    }
+
+    /**
+     * Gets the thread name. Annotated with {@code @Basic}.
+     *
+     * @return the thread name.
+     */
+    @Override
+    @Basic
+    public int getThreadPriority() {
+        return this.getWrappedEvent().getThreadPriority();
+    }
+
+    /**
      * Gets the thread name. Annotated with {@code @Basic}.
      *
      * @return the thread name.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
index dbee74f..d7ffb3c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
@@ -245,14 +245,15 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf
                 // needs shallow copy to be fast (LOG4J2-154)
                 ThreadContext.getImmutableStack(), //
 
+                THREAD_NAME_CACHING_STRATEGY.getThreadId(), //
+
                 // Thread.currentThread().getName(), //
-                THREAD_NAME_CACHING_STRATEGY.getThreadName(), //
+                THREAD_NAME_CACHING_STRATEGY.getThreadName(),
 
+                THREAD_NAME_CACHING_STRATEGY.getThreadPriority(), //
                 // location (expensive to calculate)
-                calcLocationIfRequested(fqcn),
-
-                eventTimeMillis(message), //
-                nanoClock.nanoTime() //
+                calcLocationIfRequested(fqcn)
+, eventTimeMillis(message), nanoClock.nanoTime() //
                 );
     }
 
@@ -315,10 +316,12 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf
         // needs shallow copy to be fast (LOG4J2-154)
         final ContextStack contextStack = ThreadContext.getImmutableStack();
 
+        final Long threadId = THREAD_NAME_CACHING_STRATEGY.getThreadId();
         final String threadName = THREAD_NAME_CACHING_STRATEGY.getThreadName();
+        final Integer threadPriority = THREAD_NAME_CACHING_STRATEGY.getThreadPriority();
 
         event.setValues(asyncLogger, asyncLogger.getName(), marker, fqcn, level, message, thrown, contextMap,
-                contextStack, threadName, location, eventTimeMillis(message), nanoClock.nanoTime());
+                contextStack, threadId, threadName, threadPriority, location, eventTimeMillis(message), nanoClock.nanoTime());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
index 010b877..37c7be0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
@@ -119,7 +119,9 @@ public class RingBufferLogEvent implements LogEvent {
     private ThrowableProxy thrownProxy;
     private Map<String, String> contextMap;
     private ContextStack contextStack;
+    private long threadId;
     private String threadName;
+    private int threadPriority;
     private StackTraceElement location;
     private long currentTimeMillis;
     private boolean endOfBatch;
@@ -128,8 +130,8 @@ public class RingBufferLogEvent implements LogEvent {
 
     public void setValues(final AsyncLogger anAsyncLogger, final String aLoggerName, final Marker aMarker,
             final String theFqcn, final Level aLevel, final Message msg, final Throwable aThrowable,
-            final Map<String, String> aMap, final ContextStack aContextStack, final String aThreadName,
-            final StackTraceElement aLocation, final long aCurrentTimeMillis, final long aNanoTime) {
+            final Map<String, String> aMap, final ContextStack aContextStack, long threadId,
+            final String threadName, int threadPriority, final StackTraceElement aLocation, final long aCurrentTimeMillis, final long aNanoTime) {
         this.asyncLogger = anAsyncLogger;
         this.loggerName = aLoggerName;
         this.marker = aMarker;
@@ -150,7 +152,9 @@ public class RingBufferLogEvent implements LogEvent {
         this.thrownProxy = null;
         this.contextMap = aMap;
         this.contextStack = aContextStack;
-        this.threadName = aThreadName;
+        this.threadId = threadId;
+        this.threadName = threadName;
+        this.threadPriority = threadPriority;
         this.location = aLocation;
         this.currentTimeMillis = aCurrentTimeMillis;
         this.nanoTime = aNanoTime;
@@ -259,11 +263,21 @@ public class RingBufferLogEvent implements LogEvent {
     }
 
     @Override
+    public long getThreadId() {
+        return threadId;
+    }
+
+    @Override
     public String getThreadName() {
         return threadName;
     }
 
     @Override
+    public int getThreadPriority() {
+        return threadPriority;
+    }
+
+    @Override
     public StackTraceElement getSource() {
         return location;
     }
@@ -319,10 +333,11 @@ public class RingBufferLogEvent implements LogEvent {
                 null, // t
                 null, // map
                 null, // contextStack
-                null, // threadName
+                0, // threadName
                 null, // location
                 0, // currentTimeMillis
-                0 // nanoTime
+                null, 
+                0, 0 // nanoTime
         );
     }
 
@@ -357,9 +372,12 @@ public class RingBufferLogEvent implements LogEvent {
                 .setMessage(getMessage()) // ensure non-null
                 .setNanoTime(nanoTime) //
                 .setSource(location) //
+                .setThreadId(threadId) //
                 .setThreadName(threadName) //
+                .setThreadPriority(threadPriority) //
                 .setThrown(getThrown()) // may deserialize from thrownProxy
                 .setThrownProxy(thrownProxy) // avoid unnecessarily creating thrownProxy
                 .setTimeMillis(currentTimeMillis);
     }
+
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
index 519ffb9..37a4825 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
@@ -43,7 +43,9 @@ public class RingBufferLogEventTranslator implements
     private Throwable thrown;
     private Map<String, String> contextMap;
     private ContextStack contextStack;
+    private long threadId;
     private String threadName;
+    private int threadPriority;
     private StackTraceElement location;
     private long currentTimeMillis;
     private long nanoTime;
@@ -51,9 +53,8 @@ public class RingBufferLogEventTranslator implements
     // @Override
     @Override
     public void translateTo(final RingBufferLogEvent event, final long sequence) {
-        event.setValues(asyncLogger, loggerName, marker, fqcn, level, message,
-                thrown, contextMap, contextStack, threadName, location,
-                currentTimeMillis, nanoTime);
+        event.setValues(asyncLogger, loggerName, marker, fqcn, level, message, thrown, contextMap, contextStack,
+                threadId, threadName, threadPriority, location, currentTimeMillis, nanoTime);
         clear();
     }
 
@@ -71,17 +72,18 @@ public class RingBufferLogEventTranslator implements
                 null, // t
                 null, // map
                 null, // contextStack
-                null, // threadName
+                0, // threadName
                 null, // location
                 0, // currentTimeMillis
-                0 // nanoTime
+                null, 
+                0, 0 // nanoTime
         );
     }
 
     public void setValues(final AsyncLogger anAsyncLogger, final String aLoggerName, final Marker aMarker,
             final String theFqcn, final Level aLevel, final Message msg, final Throwable aThrowable,
-            final Map<String, String> aMap, final ContextStack aContextStack, final String aThreadName,
-            final StackTraceElement aLocation, final long aCurrentTimeMillis, final long aNanoTime) {
+            final Map<String, String> aMap, final ContextStack aContextStack, long threadId,
+            final String threadName, int threadPriority, final StackTraceElement aLocation, final long aCurrentTimeMillis, final long aNanoTime) {
         this.asyncLogger = anAsyncLogger;
         this.loggerName = aLoggerName;
         this.marker = aMarker;
@@ -91,7 +93,9 @@ public class RingBufferLogEventTranslator implements
         this.thrown = aThrowable;
         this.contextMap = aMap;
         this.contextStack = aContextStack;
-        this.threadName = aThreadName;
+        this.threadId = threadId;
+        this.threadName = threadName;
+        this.threadPriority = threadPriority;
         this.location = aLocation;
         this.currentTimeMillis = aCurrentTimeMillis;
         this.nanoTime = aNanoTime;
@@ -108,11 +112,13 @@ public class RingBufferLogEventTranslator implements
         this.thrown = aThrowable;
     }
 
-    public void setValuesPart2(final Map<String, String> aMap, final ContextStack aContextStack, final String aThreadName,
-            final StackTraceElement aLocation, final long aCurrentTimeMillis, final long aNanoTime) {
+    public void setValuesPart2(final Map<String, String> aMap, final ContextStack aContextStack, long threadId,
+            final String threadName, int threadPriority, final StackTraceElement aLocation, final long aCurrentTimeMillis, final long aNanoTime) {
         this.contextMap = aMap;
         this.contextStack = aContextStack;
-        this.threadName = aThreadName;
+        this.threadId = threadId;
+        this.threadName = threadName;
+        this.threadPriority = threadPriority;
         this.location = aLocation;
         this.currentTimeMillis = aCurrentTimeMillis;
         this.nanoTime = aNanoTime;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
index 69fb55b..0de95a8 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
@@ -26,6 +26,16 @@ import org.apache.logging.log4j.util.PropertiesUtil;
 enum ThreadNameCachingStrategy { // LOG4J2-467
     CACHED {
         @Override
+        public long getThreadId() {
+            Long result = THREADLOCAL_ID.get();
+            if (result == null) {
+                result = Thread.currentThread().getId();
+                THREADLOCAL_ID.set(result);
+            }
+            return result;
+        }
+
+        @Override
         public String getThreadName() {
             String result = THREADLOCAL_NAME.get();
             if (result == null) {
@@ -34,19 +44,42 @@ enum ThreadNameCachingStrategy { // LOG4J2-467
             }
             return result;
         }
+
+        @Override
+        public int getThreadPriority() {
+            Integer result = THREADLOCAL_PRIORITY.get();
+            if (result == null) {
+                result = Thread.currentThread().getPriority();
+                THREADLOCAL_PRIORITY.set(result);
+            }
+            return result;
+        }
     },
     UNCACHED {
         @Override
+        public long getThreadId() {
+            return Thread.currentThread().getId();
+        }
+
+        @Override
         public String getThreadName() {
             return Thread.currentThread().getName();
         }
+
+        @Override
+        public int getThreadPriority() {
+            return Thread.currentThread().getPriority();
+        }
     };
     
     private static final StatusLogger LOGGER = StatusLogger.getLogger();
+    private static final ThreadLocal<Long> THREADLOCAL_ID = new ThreadLocal<>();
     private static final ThreadLocal<String> THREADLOCAL_NAME = new ThreadLocal<>();
+    private static final ThreadLocal<Integer> THREADLOCAL_PRIORITY = new ThreadLocal<>();
     
-    
+    abstract long getThreadId();
     abstract String getThreadName();
+    abstract int getThreadPriority();
 
     static ThreadNameCachingStrategy create() {
         final String name = PropertiesUtil.getProperties().getStringProperty("AsyncLogger.ThreadNameStrategy",

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
index 4fe1b38..d8ff470 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
@@ -47,7 +47,7 @@ import org.apache.logging.log4j.util.Strings;
  */
 public class Log4jLogEvent implements LogEvent {
 
-    private static final long serialVersionUID = -1351367343806656055L;
+    private static final long serialVersionUID = -8393305700508709443L;
     private static final Clock CLOCK = ClockFactory.getClock();
     private static volatile NanoClock nanoClock = new DummyNanoClock();
     private final String loggerFqcn;
@@ -60,7 +60,9 @@ public class Log4jLogEvent implements LogEvent {
     private ThrowableProxy thrownProxy;
     private final Map<String, String> contextMap;
     private final ThreadContext.ContextStack contextStack;
+    private long threadId;
     private String threadName;
+    private int threadPriority;
     private StackTraceElement source;
     private boolean includeLocation;
     private boolean endOfBatch = false;
@@ -80,7 +82,9 @@ public class Log4jLogEvent implements LogEvent {
         private ThrowableProxy thrownProxy;
         private Map<String, String> contextMap = ThreadContext.getImmutableContext();
         private ThreadContext.ContextStack contextStack = ThreadContext.getImmutableStack();
-        private String threadName = null;
+        private long threadId;
+        private String threadName;
+        private int threadPriority;
         private StackTraceElement source;
         private boolean includeLocation;
         private boolean endOfBatch = false;
@@ -114,11 +118,15 @@ public class Log4jLogEvent implements LogEvent {
                 Log4jLogEvent evt = (Log4jLogEvent) other;
                 this.thrownProxy = evt.thrownProxy;
                 this.source = evt.source;
+                this.threadId = evt.threadId;
                 this.threadName = evt.threadName;
+                this.threadPriority = evt.threadPriority;
             } else {
                 this.thrownProxy = other.getThrownProxy();
                 this.source = other.getSource();
+                this.threadId = other.getThreadId();
                 this.threadName = other.getThreadName();
+                this.threadPriority = other.getThreadPriority();
             }
         }
 
@@ -172,11 +180,21 @@ public class Log4jLogEvent implements LogEvent {
             return this;
         }
 
+        public Builder setThreadId(long threadId) {
+            this.threadId = threadId;
+            return this;
+        }
+
         public Builder setThreadName(String threadName) {
             this.threadName = threadName;
             return this;
         }
 
+        public Builder setThreadPriority(int threadPriority) {
+            this.threadPriority = threadPriority;
+            return this;
+        }
+
         public Builder setSource(StackTraceElement source) {
             this.source = source;
             return this;
@@ -206,7 +224,7 @@ public class Log4jLogEvent implements LogEvent {
         @Override
         public Log4jLogEvent build() {
             final Log4jLogEvent result = new Log4jLogEvent(loggerName, marker, loggerFqcn, level, message, thrown,
-                    thrownProxy, contextMap, contextStack, threadName, source, timeMillis, nanoTime);
+                    thrownProxy, contextMap, contextStack, threadId, threadName, threadPriority, source, timeMillis, nanoTime);
             result.setIncludeLocation(includeLocation);
             result.setEndOfBatch(endOfBatch);
             return result;
@@ -222,8 +240,8 @@ public class Log4jLogEvent implements LogEvent {
     }
 
     public Log4jLogEvent() {
-        this(Strings.EMPTY, null, Strings.EMPTY, null, null, (Throwable) null, null, null, null, null, null,
-                CLOCK.currentTimeMillis(), nanoClock.nanoTime());
+        this(Strings.EMPTY, null, Strings.EMPTY, null, null, (Throwable) null, null, null, null, 0, null,
+                0, null, CLOCK.currentTimeMillis(), nanoClock.nanoTime());
     }
 
     /**
@@ -232,8 +250,8 @@ public class Log4jLogEvent implements LogEvent {
     */
    @Deprecated
    public Log4jLogEvent(final long timestamp) {
-       this(Strings.EMPTY, null, Strings.EMPTY, null, null, (Throwable) null, null, null, null, null, null,
-               timestamp, nanoClock.nanoTime());
+       this(Strings.EMPTY, null, Strings.EMPTY, null, null, (Throwable) null, null, null, null, 0, null,
+               0, null, timestamp, nanoClock.nanoTime());
    }
 
    /**
@@ -268,13 +286,13 @@ public class Log4jLogEvent implements LogEvent {
        this(loggerName, marker, loggerFQCN, level, message, t, null,
            createMap(properties),
            ThreadContext.getDepth() == 0 ? null : ThreadContext.cloneStack(), // mutable copy
-           null, // thread name
+           0, // thread name
            null, // stack trace element
-           // LOG4J2-628 use log4j.Clock for timestamps
+           0,
+           null, // LOG4J2-628 use log4j.Clock for timestamps
            // LOG4J2-744 unless TimestampMessage already has one
            message instanceof TimestampMessage ? ((TimestampMessage) message).getTimestamp() :
-               CLOCK.currentTimeMillis(),
-           nanoClock.nanoTime());
+               CLOCK.currentTimeMillis(), nanoClock.nanoTime());
    }
 
    /**
@@ -297,8 +315,8 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
                         final Message message, final Throwable t, final Map<String, String> mdc,
                         final ThreadContext.ContextStack ndc, final String threadName,
                         final StackTraceElement location, final long timestampMillis) {
-       this(loggerName, marker, loggerFQCN, level, message, t, null, mdc, ndc, threadName,
-               location, timestampMillis, nanoClock.nanoTime());
+       this(loggerName, marker, loggerFQCN, level, message, t, null, mdc, ndc, 0,
+               threadName, 0, location, timestampMillis, nanoClock.nanoTime());
    }
 
    /**
@@ -326,7 +344,7 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
                                             final String threadName, final StackTraceElement location,
                                             final long timestamp) {
         final Log4jLogEvent result = new Log4jLogEvent(loggerName, marker, loggerFQCN, level, message, thrown,
-                thrownProxy, mdc, ndc, threadName, location, timestamp, nanoClock.nanoTime());
+                thrownProxy, mdc, ndc, 0, threadName, 0, location, timestamp, nanoClock.nanoTime());
         return result;
     }
 
@@ -341,7 +359,9 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
      * @param thrownProxy A ThrowableProxy or null.
      * @param contextMap The mapped diagnostic context.
      * @param contextStack the nested diagnostic context.
+     * @param threadId the thread ID
      * @param threadName The name of the thread.
+     * @param threadPriority the thread priority
      * @param source The locations of the caller.
      * @param timestampMillis The timestamp of the event.
      * @param nanoTime The value of the running Java Virtual Machine's high-resolution time source when the event was
@@ -349,8 +369,9 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
      */
     private Log4jLogEvent(final String loggerName, final Marker marker, final String loggerFQCN, final Level level,
             final Message message, final Throwable thrown, final ThrowableProxy thrownProxy,
-            final Map<String, String> contextMap, final ThreadContext.ContextStack contextStack,
-            final String threadName, final StackTraceElement source, final long timestampMillis, final long nanoTime) {
+            final Map<String, String> contextMap, final ThreadContext.ContextStack contextStack, long threadId,
+            final String threadName, int threadPriority, final StackTraceElement source, final long timestampMillis,
+            final long nanoTime) {
         this.loggerName = loggerName;
         this.marker = marker;
         this.loggerFqcn = loggerFQCN;
@@ -363,7 +384,9 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
         this.timeMillis = message instanceof TimestampMessage
                 ? ((TimestampMessage) message).getTimestamp()
                 : timestampMillis;
+        this.threadId = threadId;
         this.threadName = threadName;
+        this.threadPriority = threadPriority;
         this.source = source;
         if (message != null && message instanceof LoggerNameAwareMessage) {
             ((LoggerNameAwareMessage) message).setLoggerName(loggerName);
@@ -442,6 +465,14 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
         return message;
     }
 
+    @Override
+    public long getThreadId() {
+        if (threadId == 0) {
+            threadId = Thread.currentThread().getId();
+        }
+        return threadId;
+    }
+
     /**
      * Returns the name of the Thread on which the event was generated.
      * @return The name of the Thread.
@@ -454,6 +485,14 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
         return threadName;
     }
 
+    @Override
+    public int getThreadPriority() {
+        if (threadPriority == 0) {
+            threadPriority = Thread.currentThread().getPriority();
+        }
+        return threadPriority;
+    }
+
     /**
      * Returns the time in milliseconds from the epoch when the event occurred.
      * @return The time the event occurred.
@@ -605,8 +644,8 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
             final LogEventProxy proxy = (LogEventProxy) event;
             final Log4jLogEvent result = new Log4jLogEvent(proxy.loggerName, proxy.marker,
                     proxy.loggerFQCN, proxy.level, proxy.message,
-                    proxy.thrown, proxy.thrownProxy, proxy.contextMap, proxy.contextStack, proxy.threadName,
-                    proxy.source, proxy.timeMillis, proxy.nanoTime);
+                    proxy.thrown, proxy.thrownProxy, proxy.contextMap, proxy.contextStack, proxy.threadId,
+                    proxy.threadName, proxy.threadPriority, proxy.source, proxy.timeMillis, proxy.nanoTime);
             result.setEndOfBatch(proxy.isEndOfBatch);
             result.setIncludeLocation(proxy.isLocationRequired);
             return result;
@@ -675,9 +714,15 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
         if (contextStack != null ? !contextStack.equals(that.contextStack) : that.contextStack != null) {
             return false;
         }
+        if (threadId != that.threadId) {
+            return false;
+        }
         if (threadName != null ? !threadName.equals(that.threadName) : that.threadName != null) {
             return false;
         }
+        if (threadPriority != that.threadPriority) {
+            return false;
+        }
         if (thrown != null ? !thrown.equals(that.thrown) : that.thrown != null) {
             return false;
         }
@@ -702,7 +747,9 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
         result = 31 * result + (thrownProxy != null ? thrownProxy.hashCode() : 0);
         result = 31 * result + (contextMap != null ? contextMap.hashCode() : 0);
         result = 31 * result + (contextStack != null ? contextStack.hashCode() : 0);
+        result = 31 * result + (int) (threadId ^ (threadId >>> 32));
         result = 31 * result + (threadName != null ? threadName.hashCode() : 0);
+        result = 31 * result + (threadPriority ^ (threadPriority >>> 32));
         result = 31 * result + (source != null ? source.hashCode() : 0);
         result = 31 * result + (includeLocation ? 1 : 0);
         result = 31 * result + (endOfBatch ? 1 : 0);
@@ -715,7 +762,7 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
      */
     private static class LogEventProxy implements Serializable {
 
-        private static final long serialVersionUID = -7139032940312647146L;
+        private static final long serialVersionUID = -8634075037355293699L;
         private final String loggerFQCN;
         private final Marker marker;
         private final Level level;
@@ -726,11 +773,15 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
         private final ThrowableProxy thrownProxy;
         private final Map<String, String> contextMap;
         private final ThreadContext.ContextStack contextStack;
+        /** @since 2.6 */
+        private final long threadId;
         private final String threadName;
+        /** @since 2.6 */
+        private final int threadPriority;
         private final StackTraceElement source;
         private final boolean isLocationRequired;
         private final boolean isEndOfBatch;
-        /** @since Log4J 2.4 */
+        /** @since 2.4 */
         private final transient long nanoTime;
 
         public LogEventProxy(final Log4jLogEvent event, final boolean includeLocation) {
@@ -745,7 +796,9 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
             this.contextMap = event.contextMap;
             this.contextStack = event.contextStack;
             this.source = includeLocation ? event.getSource() : null;
+            this.threadId = event.getThreadId();
             this.threadName = event.getThreadName();
+            this.threadPriority = event.getThreadPriority();
             this.isLocationRequired = includeLocation;
             this.isEndOfBatch = event.endOfBatch;
             this.nanoTime = event.nanoTime;
@@ -757,10 +810,11 @@ public Log4jLogEvent(final String loggerName, final Marker marker, final String
          */
         protected Object readResolve() {
             final Log4jLogEvent result = new Log4jLogEvent(loggerName, marker, loggerFQCN, level, message, thrown,
-                    thrownProxy, contextMap, contextStack, threadName, source, timeMillis, nanoTime);
+                    thrownProxy, contextMap, contextStack, threadId, threadName, threadPriority, source, timeMillis, nanoTime);
             result.setEndOfBatch(isEndOfBatch);
             result.setIncludeLocation(isLocationRequired);
             return result;
         }
     }
+
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventMixIn.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventMixIn.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventMixIn.java
index a926499..ab9cd19 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventMixIn.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventMixIn.java
@@ -92,10 +92,20 @@ abstract class LogEventMixIn implements LogEvent {
     public abstract StackTraceElement getSource();
 
     @Override
+    @JsonProperty("threadId")
+    @JacksonXmlProperty(isAttribute = true, localName = "threadId")
+    public abstract long getThreadId();
+
+    @Override
     @JsonProperty("thread")
     @JacksonXmlProperty(isAttribute = true, localName = "thread")
     public abstract String getThreadName();
 
+    @Override
+    @JsonProperty("threadPriority")
+    @JacksonXmlProperty(isAttribute = true, localName = "threadPriority")
+    public abstract int getThreadPriority();
+
     @JsonIgnore
     @Override
     public abstract Throwable getThrown();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
index 1a3d6ad..ef69f0f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
@@ -85,7 +85,9 @@ public class CsvLogEventLayout extends AbstractCsvLayout {
             printer.print(event.getNanoTime());
             printer.print(event.getTimeMillis());
             printer.print(event.getLevel());
+            printer.print(event.getThreadId());
             printer.print(event.getThreadName());
+            printer.print(event.getThreadPriority());
             printer.print(event.getMessage().getFormattedMessage());
             printer.print(event.getLoggerFqcn());
             printer.print(event.getLoggerName());

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverter.java
new file mode 100644
index 0000000..844d47d
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverter.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.pattern;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+
+/**
+ * Formats the event thread ID.
+ * 
+ * @since 2.6
+ */
+@Plugin(name = "ThreadIdPatternConverter", category = PatternConverter.CATEGORY)
+@ConverterKeys({ "tid", "threadId" })
+public final class ThreadIdPatternConverter extends LogEventPatternConverter {
+    /**
+     * Singleton.
+     */
+    private static final ThreadIdPatternConverter INSTANCE =
+        new ThreadIdPatternConverter();
+
+    /**
+     * Private constructor.
+     */
+    private ThreadIdPatternConverter() {
+        super("ThreadId", "threadId");
+    }
+
+    /**
+     * Obtains an instance of ThreadPatternConverter.
+     *
+     * @param options options, currently ignored, may be null.
+     * @return instance of ThreadPatternConverter.
+     */
+    public static ThreadIdPatternConverter newInstance(
+        final String[] options) {
+        return INSTANCE;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void format(final LogEvent event, final StringBuilder toAppendTo) {
+        toAppendTo.append(event.getThreadId());
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverter.java
new file mode 100644
index 0000000..37c0861
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverter.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.pattern;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+
+/**
+ * Formats the event thread name.
+ */
+@Plugin(name = "ThreadPatternConverter", category = PatternConverter.CATEGORY)
+@ConverterKeys({ "t", "thread", "threadName" })
+public final class ThreadNamePatternConverter extends LogEventPatternConverter {
+    /**
+     * Singleton.
+     */
+    private static final ThreadNamePatternConverter INSTANCE =
+        new ThreadNamePatternConverter();
+
+    /**
+     * Private constructor.
+     */
+    private ThreadNamePatternConverter() {
+        super("Thread", "thread");
+    }
+
+    /**
+     * Obtains an instance of ThreadPatternConverter.
+     *
+     * @param options options, currently ignored, may be null.
+     * @return instance of ThreadPatternConverter.
+     */
+    public static ThreadNamePatternConverter newInstance(
+        final String[] options) {
+        return INSTANCE;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void format(final LogEvent event, final StringBuilder toAppendTo) {
+        toAppendTo.append(event.getThreadName());
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
deleted file mode 100644
index 8817bbc..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.pattern;
-
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.config.plugins.Plugin;
-
-/**
- * Formats the event thread name.
- */
-@Plugin(name = "ThreadPatternConverter", category = PatternConverter.CATEGORY)
-@ConverterKeys({ "t", "thread", "threadName" })
-public final class ThreadPatternConverter extends LogEventPatternConverter {
-    /**
-     * Singleton.
-     */
-    private static final ThreadPatternConverter INSTANCE =
-        new ThreadPatternConverter();
-
-    /**
-     * Private constructor.
-     */
-    private ThreadPatternConverter() {
-        super("Thread", "thread");
-    }
-
-    /**
-     * Obtains an instance of ThreadPatternConverter.
-     *
-     * @param options options, currently ignored, may be null.
-     * @return instance of ThreadPatternConverter.
-     */
-    public static ThreadPatternConverter newInstance(
-        final String[] options) {
-        return INSTANCE;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void format(final LogEvent event, final StringBuilder toAppendTo) {
-        toAppendTo.append(event.getThreadName());
-    }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverter.java
new file mode 100644
index 0000000..31ae15d
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverter.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.pattern;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+
+/**
+ * Formats the event thread priority.
+ * 
+ * @since 2.6
+ */
+@Plugin(name = "ThreadPriorityPatternConverter", category = PatternConverter.CATEGORY)
+@ConverterKeys({ "tp", "threadPriority" })
+public final class ThreadPriorityPatternConverter extends LogEventPatternConverter {
+    /**
+     * Singleton.
+     */
+    private static final ThreadPriorityPatternConverter INSTANCE =
+        new ThreadPriorityPatternConverter();
+
+    /**
+     * Private constructor.
+     */
+    private ThreadPriorityPatternConverter() {
+        super("ThreadPriority", "threadPriority");
+    }
+
+    /**
+     * Obtains an instance of ThreadPatternConverter.
+     *
+     * @param options options, currently ignored, may be null.
+     * @return instance of ThreadPatternConverter.
+     */
+    public static ThreadPriorityPatternConverter newInstance(
+        final String[] options) {
+        return INSTANCE;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void format(final LogEvent event, final StringBuilder toAppendTo) {
+        toAppendTo.append(event.getThreadPriority());
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/LogEventTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/LogEventTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/LogEventTest.java
index fc53583..722c5a1 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/LogEventTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/LogEventTest.java
@@ -105,7 +105,9 @@ public class LogEventTest {
                 .setLoggerFqcn("org.apache.logging.log4j.core.Logger") //
                 .setLevel(Level.INFO) //
                 .setMessage(new SimpleMessage("Hello, world!")) //
+                .setThreadId(1) // this must be initialized or the test fails
                 .setThreadName("this must be initialized or the test fails") //
+                .setThreadPriority(2) // this must be initialized or the test fails
                 .setNanoTime(0) //
                 .build();
         final LogEvent event2 = new Log4jLogEvent.Builder(event1).build();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaH2AppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaH2AppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaH2AppenderTest.java
index c4b9ae7..638fbe4 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaH2AppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaH2AppenderTest.java
@@ -47,7 +47,7 @@ public class JpaH2AppenderTest extends AbstractJpaAppenderTest {
                 "id INTEGER IDENTITY, timemillis BIGINT, nanoTime BIGINT, level NVARCHAR(10), loggerName NVARCHAR(255), " +
                 "message NVARCHAR(1024), thrown NVARCHAR(1048576), contextMapJson NVARCHAR(1048576)," +
                 "loggerFQCN NVARCHAR(1024), contextStack NVARCHAR(1048576), marker NVARCHAR(255), source NVARCHAR(2048)," +
-                "threadName NVARCHAR(255)" +
+                "threadId BIGINT, threadName NVARCHAR(255), threadPriority INTEGER" +
                 " )");
         statement.close();
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaHyperSqlAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaHyperSqlAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaHyperSqlAppenderTest.java
index 7ef8a24..a5379c3 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaHyperSqlAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/JpaHyperSqlAppenderTest.java
@@ -51,7 +51,7 @@ public class JpaHyperSqlAppenderTest extends AbstractJpaAppenderTest {
                 "id INTEGER IDENTITY, timemillis BIGINT, nanoTime BIGINT, level VARCHAR(10), loggerName VARCHAR(255), " +
                 "message VARCHAR(1024), thrown VARCHAR(1048576), contextMapJson VARCHAR(1048576)," +
                 "loggerFQCN VARCHAR(1024), contextStack VARCHAR(1048576), marker VARCHAR(255), source VARCHAR(2048)," +
-                "threadName VARCHAR(255)" +
+                "threadId BIGINT, threadName NVARCHAR(255), threadPriority INTEGER" +
                 " )");
         statement.close();
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
index e70cdb9..02ef9ab 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
@@ -112,12 +112,24 @@ public class TestBaseEntity extends AbstractLogEventWrapperEntity {
 
     @Override
     @Transient
+    public long getThreadId() {
+        return this.getWrappedEvent().getThreadId();
+    }
+
+    @Override
+    @Transient
     public String getThreadName() {
         return this.getWrappedEvent().getThreadName();
     }
 
     @Override
     @Transient
+    public int getThreadPriority() {
+        return this.getWrappedEvent().getThreadPriority();
+    }
+
+    @Override
+    @Transient
     public long getTimeMillis() {
         return this.getWrappedEvent().getTimeMillis();
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
index 2da7b11..ec3a874 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
@@ -60,7 +60,7 @@ public class RingBufferLogEventTest {
         final long currentTimeMillis = 0;
         final long nanoTime = 1;
         evt.setValues(null, loggerName, marker, fqcn, level, data, t, map,
-                contextStack, threadName, location, currentTimeMillis, nanoTime);
+                contextStack, -1, threadName, -1, location, currentTimeMillis, nanoTime);
         assertEquals(Level.OFF, evt.getLevel());
     }
 
@@ -80,7 +80,7 @@ public class RingBufferLogEventTest {
         final long currentTimeMillis = 0;
         final long nanoTime = 1;
         evt.setValues(null, loggerName, marker, fqcn, level, data, t, map,
-                contextStack, threadName, location, currentTimeMillis, nanoTime);
+                contextStack, -1, threadName, -1, location, currentTimeMillis, nanoTime);
         assertNotNull(evt.getMessage());
     }
 
@@ -100,7 +100,7 @@ public class RingBufferLogEventTest {
         final long currentTimeMillis = 123;
         final long nanoTime = 1;
         evt.setValues(null, loggerName, marker, fqcn, level, data, t, map,
-                contextStack, threadName, location, currentTimeMillis, nanoTime);
+                contextStack, -1, threadName, -1, location, currentTimeMillis, nanoTime);
         assertEquals(123, evt.getTimeMillis());
     }
 
@@ -120,7 +120,7 @@ public class RingBufferLogEventTest {
         final long currentTimeMillis = 12345;
         final long nanoTime = 1;
         evt.setValues(null, loggerName, marker, fqcn, level, data, t, map,
-                contextStack, threadName, location, currentTimeMillis, nanoTime);
+                contextStack, -1, threadName, -1, location, currentTimeMillis, nanoTime);
         
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         final ObjectOutputStream out = new ObjectOutputStream(baos);
@@ -159,7 +159,7 @@ public class RingBufferLogEventTest {
         final long currentTimeMillis = 12345;
         final long nanoTime = 1;
         evt.setValues(null, loggerName, marker, fqcn, level, data, t, map,
-                contextStack, threadName, location, currentTimeMillis, nanoTime);
+                contextStack, -1, threadName, -1, location, currentTimeMillis, nanoTime);
         
         final LogEvent actual = evt.createMemento();
         assertEquals(evt.getLoggerName(), actual.getLoggerName());

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java
index e029a53..0a7df37 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java
@@ -174,7 +174,8 @@ public class Log4jLogEventTest {
         // System.out.println("final String base64 = \"" + base64Str.replaceAll("\r\n", "\\\\r\\\\n\" +\r\n\"") +
         // "\";");
         
-         final String base64 = "rO0ABXNyAD5vcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLkxvZzRqTG9nRXZlbnQkTG9nRXZlbnRQcm94eZztD11w2ioWAgANWgAMaXNFbmRPZkJhdGNoWgASaXNMb2NhdGlvblJlcXVpcmVkSgAKdGltZU1pbGxpc0wACmNvbnRleHRNYXB0AA9MamF2YS91dGlsL01hcDtMAAxjb250ZXh0U3RhY2t0ADVMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL1RocmVhZENvbnRleHQkQ29udGV4dFN0YWNrO0wABWxldmVsdAAgTG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9MZXZlbDtMAApsb2dnZXJGUUNOdAASTGphdmEvbGFuZy9TdHJpbmc7TAAKbG9nZ2VyTmFtZXEAfgAETAAGbWFya2VydAAhTG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9NYXJrZXI7TAAHbWVzc2FnZXQAKkxvcmcvYXBhY2hlL2xvZ2dpbmcvbG9nNGovbWVzc2FnZS9NZXNzYWdlO0wABnNvdXJjZXQAHUxqYXZhL2xhbmcvU3RhY2tUcmFjZUVsZW1lbnQ7TAAKdGhyZWFkTmFtZXEAfgAETAALdGhyb3duUHJveHl0ADNMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL2NvcmUvaW1wbC9UaHJvd2FibGVQcm94eTt4cAAAAAAAAEmWAtJzcgAeamF2YS51dGlsLkNvbGxlY3Rpb25zJEVtcHR5TWFwWTYUhVrc59ACAAB4cHNyAD5vcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouVGhyZWFkQ29udGV4dCRFbXB0eVRocmVhZENvbnRleHRTdGFjawAAAAAAAAABAgAAeHBzcgAeb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLkxld
 mVsAAAAAAAYIBoCAANJAAhpbnRMZXZlbEwABG5hbWVxAH4ABEwADXN0YW5kYXJkTGV2ZWx0ACxMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL3NwaS9TdGFuZGFyZExldmVsO3hwAAABkHQABElORk9+cgAqb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLnNwaS5TdGFuZGFyZExldmVsAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAAESU5GT3QAAHQACXNvbWUudGVzdHBzcgAub3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLm1lc3NhZ2UuU2ltcGxlTWVzc2FnZYt0TTBgt6KoAgABTAAHbWVzc2FnZXEAfgAEeHB0AANhYmNwdAAEbWFpbnNyADFvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLlRocm93YWJsZVByb3h52cww1Zp7rPoCAAdJABJjb21tb25FbGVtZW50Q291bnRMAApjYXVzZVByb3h5cQB+AAhbABJleHRlbmRlZFN0YWNrVHJhY2V0AD9bTG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9jb3JlL2ltcGwvRXh0ZW5kZWRTdGFja1RyYWNlRWxlbWVudDtMABBsb2NhbGl6ZWRNZXNzYWdlcQB+AARMAAdtZXNzYWdlcQB+AARMAARuYW1lcQB+AARbABFzdXBwcmVzc2VkUHJveGllc3QANFtMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL2NvcmUvaW1wbC9UaHJvd2FibGVQcm94eTt4cAAAAABwdXIAP1tMb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLmNvcmUuaW1wbC5FeHRlbmRlZFN0YWNrVHJhY2VFbGVtZW50O8rPiCOlx8+8AgAAeHAAAAAac3IAPG9yZy5hcGFjaGUubG9nZ2luZy5sb2
 c0ai5jb3JlLmltcGwuRXh0ZW5kZWRTdGFja1RyYWNlRWxlbWVudOHez7rGtpAHAgACTAAOZXh0cmFDbGFzc0luZm90ADZMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL2NvcmUvaW1wbC9FeHRlbmRlZENsYXNzSW5mbztMABFzdGFja1RyYWNlRWxlbWVudHEAfgAHeHBzcgA0b3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLmNvcmUuaW1wbC5FeHRlbmRlZENsYXNzSW5mbwAAAAAAAAABAgADWgAFZXhhY3RMAAhsb2NhdGlvbnEAfgAETAAHdmVyc2lvbnEAfgAEeHABdAANdGVzdC1jbGFzc2VzL3QAAT9zcgAbamF2YS5sYW5nLlN0YWNrVHJhY2VFbGVtZW50YQnFmiY23YUCAARJAApsaW5lTnVtYmVyTAAOZGVjbGFyaW5nQ2xhc3NxAH4ABEwACGZpbGVOYW1lcQB+AARMAAptZXRob2ROYW1lcQB+AAR4cAAAAJh0ADRvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLkxvZzRqTG9nRXZlbnRUZXN0dAAWTG9nNGpMb2dFdmVudFRlc3QuamF2YXQAKnRlc3RKYXZhSW9TZXJpYWxpemFibGVXaXRoVW5rbm93blRocm93YWJsZXNxAH4AInNxAH4AJQBxAH4AKHQACDEuNy4wXzU1c3EAfgAp/////nQAJHN1bi5yZWZsZWN0Lk5hdGl2ZU1ldGhvZEFjY2Vzc29ySW1wbHB0AAdpbnZva2Uwc3EAfgAic3EAfgAlAHEAfgAocQB+ADBzcQB+ACn/////cQB+ADJwdAAGaW52b2tlc3EAfgAic3EAfgAlAHEAfgAocQB+ADBzcQB+ACn/////dAAoc3VuLnJlZmxlY3QuRGVsZWdhdGluZ01ldGhvZEFjY2Vzc29ySW1wbHBxAH4AN3NxAH4AInN
 xAH4AJQBxAH4AKHEAfgAwc3EAfgAp/////3QAGGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZHBxAH4AN3NxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAAL3QAKW9yZy5qdW5pdC5ydW5uZXJzLm1vZGVsLkZyYW1ld29ya01ldGhvZCQxdAAURnJhbWV3b3JrTWV0aG9kLmphdmF0ABFydW5SZWZsZWN0aXZlQ2FsbHNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAADHQAM29yZy5qdW5pdC5pbnRlcm5hbC5ydW5uZXJzLm1vZGVsLlJlZmxlY3RpdmVDYWxsYWJsZXQAF1JlZmxlY3RpdmVDYWxsYWJsZS5qYXZhdAADcnVuc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTEuamFycQB+AChzcQB+ACkAAAAsdAAnb3JnLmp1bml0LnJ1bm5lcnMubW9kZWwuRnJhbWV3b3JrTWV0aG9kcQB+AEV0ABFpbnZva2VFeHBsb3NpdmVseXNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAAEXQAMm9yZy5qdW5pdC5pbnRlcm5hbC5ydW5uZXJzLnN0YXRlbWVudHMuSW52b2tlTWV0aG9kdAARSW52b2tlTWV0aG9kLmphdmF0AAhldmFsdWF0ZXNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAABD3QAHm9yZy5qdW5pdC5ydW5uZXJzLlBhcmVudFJ1bm5lcnQAEVBhcmVudFJ1bm5lci5qYXZhdAAHcnVuTGVhZnNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAARnQAKG9yZy5qdW5pdC5ydW5uZXJzLkJsb2NrSlVuaXQ0
 Q2xhc3NSdW5uZXJ0ABtCbG9ja0pVbml0NENsYXNzUnVubmVyLmphdmF0AAhydW5DaGlsZHNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAAMnEAfgBmcQB+AGdxAH4AaHNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAA7nQAIG9yZy5qdW5pdC5ydW5uZXJzLlBhcmVudFJ1bm5lciQzcQB+AGBxAH4ATXNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAAP3QAIG9yZy5qdW5pdC5ydW5uZXJzLlBhcmVudFJ1bm5lciQxcQB+AGB0AAhzY2hlZHVsZXNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAA7HEAfgBfcQB+AGB0AAtydW5DaGlsZHJlbnNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAANXEAfgBfcQB+AGB0AAphY2Nlc3MkMDAwc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTEuamFycQB+AChzcQB+ACkAAADldAAgb3JnLmp1bml0LnJ1bm5lcnMuUGFyZW50UnVubmVyJDJxAH4AYHEAfgBac3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTEuamFycQB+AChzcQB+ACkAAAAadAAwb3JnLmp1bml0LmludGVybmFsLnJ1bm5lcnMuc3RhdGVtZW50cy5SdW5CZWZvcmVzdAAPUnVuQmVmb3Jlcy5qYXZhcQB+AFpzcQB+ACJzcQB+ACUBdAAOanVuaXQtNC4xMS5qYXJxAH4AKHNxAH4AKQAAABt0AC9vcmcuanVuaXQuaW50ZXJuYWwucnVubmVycy5zdGF0ZW1lbnRzLlJ1bkFmdGVyc3QADlJ1bkFmd
 GVycy5qYXZhcQB+AFpzcQB+ACJzcQB+ACUBdAAOanVuaXQtNC4xMS5qYXJxAH4AKHNxAH4AKQAAATVxAH4AX3EAfgBgcQB+AE1zcQB+ACJzcQB+ACUBdAAELmNwL3EAfgAoc3EAfgApAAAAMnQAOm9yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5qdW5pdDQucnVubmVyLkpVbml0NFRlc3RSZWZlcmVuY2V0ABhKVW5pdDRUZXN0UmVmZXJlbmNlLmphdmFxAH4ATXNxAH4AInNxAH4AJQF0AAQuY3AvcQB+AChzcQB+ACkAAAAmdAAzb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmp1bml0LnJ1bm5lci5UZXN0RXhlY3V0aW9udAASVGVzdEV4ZWN1dGlvbi5qYXZhcQB+AE1zcQB+ACJzcQB+ACUBdAAELmNwL3EAfgAoc3EAfgApAAAB03QANm9yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5qdW5pdC5ydW5uZXIuUmVtb3RlVGVzdFJ1bm5lcnQAFVJlbW90ZVRlc3RSdW5uZXIuamF2YXQACHJ1blRlc3Rzc3EAfgAic3EAfgAlAXQABC5jcC9xAH4AKHNxAH4AKQAAAqtxAH4Ap3EAfgCocQB+AKlzcQB+ACJzcQB+ACUBdAAELmNwL3EAfgAoc3EAfgApAAABhnEAfgCncQB+AKhxAH4ATXNxAH4AInNxAH4AJQF0AAQuY3AvcQB+AChzcQB+ACkAAADFcQB+AKdxAH4AqHQABG1haW50ABZPTUcgSSd2ZSBiZWVuIGRlbGV0ZWQhcQB+ALd0AEVvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLkxvZzRqTG9nRXZlbnRUZXN0JERlbGV0ZWRFeGNlcHRpb251cgA0W0xvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLlRocm93YWJsZV
 Byb3h5O/rtAeCFous5AgAAeHAAAAAA";
+        final String base64_v_2_5 = "rO0ABXNyAD5vcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLkxvZzRqTG9nRXZlbnQkTG9nRXZlbnRQcm94eZztD11w2ioWAgANWgAMaXNFbmRPZkJhdGNoWgASaXNMb2NhdGlvblJlcXVpcmVkSgAKdGltZU1pbGxpc0wACmNvbnRleHRNYXB0AA9MamF2YS91dGlsL01hcDtMAAxjb250ZXh0U3RhY2t0ADVMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL1RocmVhZENvbnRleHQkQ29udGV4dFN0YWNrO0wABWxldmVsdAAgTG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9MZXZlbDtMAApsb2dnZXJGUUNOdAASTGphdmEvbGFuZy9TdHJpbmc7TAAKbG9nZ2VyTmFtZXEAfgAETAAGbWFya2VydAAhTG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9NYXJrZXI7TAAHbWVzc2FnZXQAKkxvcmcvYXBhY2hlL2xvZ2dpbmcvbG9nNGovbWVzc2FnZS9NZXNzYWdlO0wABnNvdXJjZXQAHUxqYXZhL2xhbmcvU3RhY2tUcmFjZUVsZW1lbnQ7TAAKdGhyZWFkTmFtZXEAfgAETAALdGhyb3duUHJveHl0ADNMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL2NvcmUvaW1wbC9UaHJvd2FibGVQcm94eTt4cAAAAAAAAEmWAtJzcgAeamF2YS51dGlsLkNvbGxlY3Rpb25zJEVtcHR5TWFwWTYUhVrc59ACAAB4cHNyAD5vcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouVGhyZWFkQ29udGV4dCRFbXB0eVRocmVhZENvbnRleHRTdGFjawAAAAAAAAABAgAAeHBzcgAeb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRq
 LkxldmVsAAAAAAAYIBoCAANJAAhpbnRMZXZlbEwABG5hbWVxAH4ABEwADXN0YW5kYXJkTGV2ZWx0ACxMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL3NwaS9TdGFuZGFyZExldmVsO3hwAAABkHQABElORk9+cgAqb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLnNwaS5TdGFuZGFyZExldmVsAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAAESU5GT3QAAHQACXNvbWUudGVzdHBzcgAub3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLm1lc3NhZ2UuU2ltcGxlTWVzc2FnZYt0TTBgt6KoAgABTAAHbWVzc2FnZXEAfgAEeHB0AANhYmNwdAAEbWFpbnNyADFvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLlRocm93YWJsZVByb3h52cww1Zp7rPoCAAdJABJjb21tb25FbGVtZW50Q291bnRMAApjYXVzZVByb3h5cQB+AAhbABJleHRlbmRlZFN0YWNrVHJhY2V0AD9bTG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9jb3JlL2ltcGwvRXh0ZW5kZWRTdGFja1RyYWNlRWxlbWVudDtMABBsb2NhbGl6ZWRNZXNzYWdlcQB+AARMAAdtZXNzYWdlcQB+AARMAARuYW1lcQB+AARbABFzdXBwcmVzc2VkUHJveGllc3QANFtMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL2NvcmUvaW1wbC9UaHJvd2FibGVQcm94eTt4cAAAAABwdXIAP1tMb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLmNvcmUuaW1wbC5FeHRlbmRlZFN0YWNrVHJhY2VFbGVtZW50O8rPiCOlx8+8AgAAeHAAAAAac3IAPG9yZy5hcGFjaGUubG9nZ2luZ
 y5sb2c0ai5jb3JlLmltcGwuRXh0ZW5kZWRTdGFja1RyYWNlRWxlbWVudOHez7rGtpAHAgACTAAOZXh0cmFDbGFzc0luZm90ADZMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL2NvcmUvaW1wbC9FeHRlbmRlZENsYXNzSW5mbztMABFzdGFja1RyYWNlRWxlbWVudHEAfgAHeHBzcgA0b3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLmNvcmUuaW1wbC5FeHRlbmRlZENsYXNzSW5mbwAAAAAAAAABAgADWgAFZXhhY3RMAAhsb2NhdGlvbnEAfgAETAAHdmVyc2lvbnEAfgAEeHABdAANdGVzdC1jbGFzc2VzL3QAAT9zcgAbamF2YS5sYW5nLlN0YWNrVHJhY2VFbGVtZW50YQnFmiY23YUCAARJAApsaW5lTnVtYmVyTAAOZGVjbGFyaW5nQ2xhc3NxAH4ABEwACGZpbGVOYW1lcQB+AARMAAptZXRob2ROYW1lcQB+AAR4cAAAAJh0ADRvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLkxvZzRqTG9nRXZlbnRUZXN0dAAWTG9nNGpMb2dFdmVudFRlc3QuamF2YXQAKnRlc3RKYXZhSW9TZXJpYWxpemFibGVXaXRoVW5rbm93blRocm93YWJsZXNxAH4AInNxAH4AJQBxAH4AKHQACDEuNy4wXzU1c3EAfgAp/////nQAJHN1bi5yZWZsZWN0Lk5hdGl2ZU1ldGhvZEFjY2Vzc29ySW1wbHB0AAdpbnZva2Uwc3EAfgAic3EAfgAlAHEAfgAocQB+ADBzcQB+ACn/////cQB+ADJwdAAGaW52b2tlc3EAfgAic3EAfgAlAHEAfgAocQB+ADBzcQB+ACn/////dAAoc3VuLnJlZmxlY3QuRGVsZWdhdGluZ01ldGhvZEFjY2Vzc29ySW1wbHBxAH4AN3NxAH
 4AInNxAH4AJQBxAH4AKHEAfgAwc3EAfgAp/////3QAGGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZHBxAH4AN3NxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAAL3QAKW9yZy5qdW5pdC5ydW5uZXJzLm1vZGVsLkZyYW1ld29ya01ldGhvZCQxdAAURnJhbWV3b3JrTWV0aG9kLmphdmF0ABFydW5SZWZsZWN0aXZlQ2FsbHNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAADHQAM29yZy5qdW5pdC5pbnRlcm5hbC5ydW5uZXJzLm1vZGVsLlJlZmxlY3RpdmVDYWxsYWJsZXQAF1JlZmxlY3RpdmVDYWxsYWJsZS5qYXZhdAADcnVuc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTEuamFycQB+AChzcQB+ACkAAAAsdAAnb3JnLmp1bml0LnJ1bm5lcnMubW9kZWwuRnJhbWV3b3JrTWV0aG9kcQB+AEV0ABFpbnZva2VFeHBsb3NpdmVseXNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAAEXQAMm9yZy5qdW5pdC5pbnRlcm5hbC5ydW5uZXJzLnN0YXRlbWVudHMuSW52b2tlTWV0aG9kdAARSW52b2tlTWV0aG9kLmphdmF0AAhldmFsdWF0ZXNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAABD3QAHm9yZy5qdW5pdC5ydW5uZXJzLlBhcmVudFJ1bm5lcnQAEVBhcmVudFJ1bm5lci5qYXZhdAAHcnVuTGVhZnNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAARnQAKG9yZy5qdW5pdC5ydW5uZXJzLkJsb2NrSlV
 uaXQ0Q2xhc3NSdW5uZXJ0ABtCbG9ja0pVbml0NENsYXNzUnVubmVyLmphdmF0AAhydW5DaGlsZHNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAAMnEAfgBmcQB+AGdxAH4AaHNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAA7nQAIG9yZy5qdW5pdC5ydW5uZXJzLlBhcmVudFJ1bm5lciQzcQB+AGBxAH4ATXNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAAP3QAIG9yZy5qdW5pdC5ydW5uZXJzLlBhcmVudFJ1bm5lciQxcQB+AGB0AAhzY2hlZHVsZXNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAA7HEAfgBfcQB+AGB0AAtydW5DaGlsZHJlbnNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjExLmphcnEAfgAoc3EAfgApAAAANXEAfgBfcQB+AGB0AAphY2Nlc3MkMDAwc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTEuamFycQB+AChzcQB+ACkAAADldAAgb3JnLmp1bml0LnJ1bm5lcnMuUGFyZW50UnVubmVyJDJxAH4AYHEAfgBac3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTEuamFycQB+AChzcQB+ACkAAAAadAAwb3JnLmp1bml0LmludGVybmFsLnJ1bm5lcnMuc3RhdGVtZW50cy5SdW5CZWZvcmVzdAAPUnVuQmVmb3Jlcy5qYXZhcQB+AFpzcQB+ACJzcQB+ACUBdAAOanVuaXQtNC4xMS5qYXJxAH4AKHNxAH4AKQAAABt0AC9vcmcuanVuaXQuaW50ZXJuYWwucnVubmVycy5zdGF0ZW1lbnRzLlJ1bkFmdGVyc3QADlJ1
 bkFmdGVycy5qYXZhcQB+AFpzcQB+ACJzcQB+ACUBdAAOanVuaXQtNC4xMS5qYXJxAH4AKHNxAH4AKQAAATVxAH4AX3EAfgBgcQB+AE1zcQB+ACJzcQB+ACUBdAAELmNwL3EAfgAoc3EAfgApAAAAMnQAOm9yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5qdW5pdDQucnVubmVyLkpVbml0NFRlc3RSZWZlcmVuY2V0ABhKVW5pdDRUZXN0UmVmZXJlbmNlLmphdmFxAH4ATXNxAH4AInNxAH4AJQF0AAQuY3AvcQB+AChzcQB+ACkAAAAmdAAzb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmp1bml0LnJ1bm5lci5UZXN0RXhlY3V0aW9udAASVGVzdEV4ZWN1dGlvbi5qYXZhcQB+AE1zcQB+ACJzcQB+ACUBdAAELmNwL3EAfgAoc3EAfgApAAAB03QANm9yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5qdW5pdC5ydW5uZXIuUmVtb3RlVGVzdFJ1bm5lcnQAFVJlbW90ZVRlc3RSdW5uZXIuamF2YXQACHJ1blRlc3Rzc3EAfgAic3EAfgAlAXQABC5jcC9xAH4AKHNxAH4AKQAAAqtxAH4Ap3EAfgCocQB+AKlzcQB+ACJzcQB+ACUBdAAELmNwL3EAfgAoc3EAfgApAAABhnEAfgCncQB+AKhxAH4ATXNxAH4AInNxAH4AJQF0AAQuY3AvcQB+AChzcQB+ACkAAADFcQB+AKdxAH4AqHQABG1haW50ABZPTUcgSSd2ZSBiZWVuIGRlbGV0ZWQhcQB+ALd0AEVvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLkxvZzRqTG9nRXZlbnRUZXN0JERlbGV0ZWRFeGNlcHRpb251cgA0W0xvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLlRocm93Y
 WJsZVByb3h5O/rtAeCFous5AgAAeHAAAAAA";
+        final String base64 = "rO0ABXNyAD5vcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLkxvZzRqTG9nRXZlbnQkTG9nRXZlbnRQcm94eYgtmn+yXsP9AgAPWgAMaXNFbmRPZkJhdGNoWgASaXNMb2NhdGlvblJlcXVpcmVkSgAIdGhyZWFkSWRJAA50aHJlYWRQcmlvcml0eUoACnRpbWVNaWxsaXNMAApjb250ZXh0TWFwdAAPTGphdmEvdXRpbC9NYXA7TAAMY29udGV4dFN0YWNrdAA1TG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9UaHJlYWRDb250ZXh0JENvbnRleHRTdGFjaztMAAVsZXZlbHQAIExvcmcvYXBhY2hlL2xvZ2dpbmcvbG9nNGovTGV2ZWw7TAAKbG9nZ2VyRlFDTnQAEkxqYXZhL2xhbmcvU3RyaW5nO0wACmxvZ2dlck5hbWVxAH4ABEwABm1hcmtlcnQAIUxvcmcvYXBhY2hlL2xvZ2dpbmcvbG9nNGovTWFya2VyO0wAB21lc3NhZ2V0ACpMb3JnL2FwYWNoZS9sb2dnaW5nL2xvZzRqL21lc3NhZ2UvTWVzc2FnZTtMAAZzb3VyY2V0AB1MamF2YS9sYW5nL1N0YWNrVHJhY2VFbGVtZW50O0wACnRocmVhZE5hbWVxAH4ABEwAC3Rocm93blByb3h5dAAzTG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9jb3JlL2ltcGwvVGhyb3dhYmxlUHJveHk7eHAAAAAAAAAAAAABAAAABQAAAABJlgLSc3IAHmphdmEudXRpbC5Db2xsZWN0aW9ucyRFbXB0eU1hcFk2FIVa3OfQAgAAeHBzcgA+b3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLlRocmVhZENvbnRleHQkRW1wdHlUaHJlYWRDb250ZXh0U3RhY2sAAAAAAA
 AAAQIAAHhwc3IAHm9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5MZXZlbAAAAAAAGCAaAgADSQAIaW50TGV2ZWxMAARuYW1lcQB+AARMAA1zdGFuZGFyZExldmVsdAAsTG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9zcGkvU3RhbmRhcmRMZXZlbDt4cAAAAZB0AARJTkZPfnIAKm9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5zcGkuU3RhbmRhcmRMZXZlbAAAAAAAAAAAEgAAeHIADmphdmEubGFuZy5FbnVtAAAAAAAAAAASAAB4cHQABElORk90AAB0AAlzb21lLnRlc3Rwc3IALm9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5tZXNzYWdlLlNpbXBsZU1lc3NhZ2WLdE0wYLeiqAIAAUwAB21lc3NhZ2VxAH4ABHhwdAADYWJjcHQABG1haW5zcgAxb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLmNvcmUuaW1wbC5UaHJvd2FibGVQcm94ednMMNWae6z6AgAHSQASY29tbW9uRWxlbWVudENvdW50TAAKY2F1c2VQcm94eXEAfgAIWwASZXh0ZW5kZWRTdGFja1RyYWNldAA/W0xvcmcvYXBhY2hlL2xvZ2dpbmcvbG9nNGovY29yZS9pbXBsL0V4dGVuZGVkU3RhY2tUcmFjZUVsZW1lbnQ7TAAQbG9jYWxpemVkTWVzc2FnZXEAfgAETAAHbWVzc2FnZXEAfgAETAAEbmFtZXEAfgAEWwARc3VwcHJlc3NlZFByb3hpZXN0ADRbTG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9jb3JlL2ltcGwvVGhyb3dhYmxlUHJveHk7eHAAAAAAcHVyAD9bTG9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5jb3JlLmltcGwuRXh0ZW5kZWRTdGFja1RyYWNlRWxlbWVudDvKz4g
 jpcfPvAIAAHhwAAAAGnNyADxvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5pbXBsLkV4dGVuZGVkU3RhY2tUcmFjZUVsZW1lbnTh3s+6xraQBwIAAkwADmV4dHJhQ2xhc3NJbmZvdAA2TG9yZy9hcGFjaGUvbG9nZ2luZy9sb2c0ai9jb3JlL2ltcGwvRXh0ZW5kZWRDbGFzc0luZm87TAARc3RhY2tUcmFjZUVsZW1lbnRxAH4AB3hwc3IANG9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5jb3JlLmltcGwuRXh0ZW5kZWRDbGFzc0luZm8AAAAAAAAAAQIAA1oABWV4YWN0TAAIbG9jYXRpb25xAH4ABEwAB3ZlcnNpb25xAH4ABHhwAXQADXRlc3QtY2xhc3Nlcy90AAE/c3IAG2phdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudGEJxZomNt2FAgAESQAKbGluZU51bWJlckwADmRlY2xhcmluZ0NsYXNzcQB+AARMAAhmaWxlTmFtZXEAfgAETAAKbWV0aG9kTmFtZXEAfgAEeHAAAACqdAA0b3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLmNvcmUuaW1wbC5Mb2c0akxvZ0V2ZW50VGVzdHQAFkxvZzRqTG9nRXZlbnRUZXN0LmphdmF0ACp0ZXN0SmF2YUlvU2VyaWFsaXphYmxlV2l0aFVua25vd25UaHJvd2FibGVzcQB+ACJzcQB+ACUAcQB+ACh0AAgxLjcuMF83OXNxAH4AKf////50ACRzdW4ucmVmbGVjdC5OYXRpdmVNZXRob2RBY2Nlc3NvckltcGx0AB1OYXRpdmVNZXRob2RBY2Nlc3NvckltcGwuamF2YXQAB2ludm9rZTBzcQB+ACJzcQB+ACUAcQB+AChxAH4AMHNxAH4AKQAAADlxAH4AMnEAfgAzdAAGaW52b2tlc3EAfgAic3EAfgAlAHEA
 fgAocQB+ADBzcQB+ACkAAAArdAAoc3VuLnJlZmxlY3QuRGVsZWdhdGluZ01ldGhvZEFjY2Vzc29ySW1wbHQAIURlbGVnYXRpbmdNZXRob2RBY2Nlc3NvckltcGwuamF2YXEAfgA4c3EAfgAic3EAfgAlAHEAfgAocQB+ADBzcQB+ACkAAAJedAAYamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kdAALTWV0aG9kLmphdmFxAH4AOHNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjEyLmphcnQABDQuMTJzcQB+ACkAAAAydAApb3JnLmp1bml0LnJ1bm5lcnMubW9kZWwuRnJhbWV3b3JrTWV0aG9kJDF0ABRGcmFtZXdvcmtNZXRob2QuamF2YXQAEXJ1blJlZmxlY3RpdmVDYWxsc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTIuamFycQB+AEZzcQB+ACkAAAAMdAAzb3JnLmp1bml0LmludGVybmFsLnJ1bm5lcnMubW9kZWwuUmVmbGVjdGl2ZUNhbGxhYmxldAAXUmVmbGVjdGl2ZUNhbGxhYmxlLmphdmF0AANydW5zcQB+ACJzcQB+ACUBdAAOanVuaXQtNC4xMi5qYXJxAH4ARnNxAH4AKQAAAC90ACdvcmcuanVuaXQucnVubmVycy5tb2RlbC5GcmFtZXdvcmtNZXRob2RxAH4ASXQAEWludm9rZUV4cGxvc2l2ZWx5c3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTIuamFycQB+AEZzcQB+ACkAAAARdAAyb3JnLmp1bml0LmludGVybmFsLnJ1bm5lcnMuc3RhdGVtZW50cy5JbnZva2VNZXRob2R0ABFJbnZva2VNZXRob2QuamF2YXQACGV2YWx1YXRlc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTIuamFycQB+AEZzcQB+ACkAAAFFdAAeb3JnLmp1bml0LnJ1b
 m5lcnMuUGFyZW50UnVubmVydAARUGFyZW50UnVubmVyLmphdmF0AAdydW5MZWFmc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTIuamFycQB+AEZzcQB+ACkAAABOdAAob3JnLmp1bml0LnJ1bm5lcnMuQmxvY2tKVW5pdDRDbGFzc1J1bm5lcnQAG0Jsb2NrSlVuaXQ0Q2xhc3NSdW5uZXIuamF2YXQACHJ1bkNoaWxkc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTIuamFycQB+AEZzcQB+ACkAAAA5cQB+AGpxAH4Aa3EAfgBsc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTIuamFycQB+AEZzcQB+ACkAAAEidAAgb3JnLmp1bml0LnJ1bm5lcnMuUGFyZW50UnVubmVyJDNxAH4AZHEAfgBRc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTIuamFycQB+AEZzcQB+ACkAAABHdAAgb3JnLmp1bml0LnJ1bm5lcnMuUGFyZW50UnVubmVyJDFxAH4AZHQACHNjaGVkdWxlc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTIuamFycQB+AEZzcQB+ACkAAAEgcQB+AGNxAH4AZHQAC3J1bkNoaWxkcmVuc3EAfgAic3EAfgAlAXQADmp1bml0LTQuMTIuamFycQB+AEZzcQB+ACkAAAA6cQB+AGNxAH4AZHQACmFjY2VzcyQwMDBzcQB+ACJzcQB+ACUBdAAOanVuaXQtNC4xMi5qYXJxAH4ARnNxAH4AKQAAAQx0ACBvcmcuanVuaXQucnVubmVycy5QYXJlbnRSdW5uZXIkMnEAfgBkcQB+AF5zcQB+ACJzcQB+ACUBdAAOanVuaXQtNC4xMi5qYXJxAH4ARnNxAH4AKQAAABp0ADBvcmcuanVuaXQuaW50ZXJuYWwucnVubmVycy5zdGF0ZW1lbnRzLlJ1bkJlZm9yZXN0AA
 9SdW5CZWZvcmVzLmphdmFxAH4AXnNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjEyLmphcnEAfgBGc3EAfgApAAAAG3QAL29yZy5qdW5pdC5pbnRlcm5hbC5ydW5uZXJzLnN0YXRlbWVudHMuUnVuQWZ0ZXJzdAAOUnVuQWZ0ZXJzLmphdmFxAH4AXnNxAH4AInNxAH4AJQF0AA5qdW5pdC00LjEyLmphcnEAfgBGc3EAfgApAAABa3EAfgBjcQB+AGRxAH4AUXNxAH4AInNxAH4AJQF0AAQuY3AvcQB+AChzcQB+ACkAAABWdAA6b3JnLmVjbGlwc2UuamR0LmludGVybmFsLmp1bml0NC5ydW5uZXIuSlVuaXQ0VGVzdFJlZmVyZW5jZXQAGEpVbml0NFRlc3RSZWZlcmVuY2UuamF2YXEAfgBRc3EAfgAic3EAfgAlAXQABC5jcC9xAH4AKHNxAH4AKQAAACZ0ADNvcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuanVuaXQucnVubmVyLlRlc3RFeGVjdXRpb250ABJUZXN0RXhlY3V0aW9uLmphdmFxAH4AUXNxAH4AInNxAH4AJQF0AAQuY3AvcQB+AChzcQB+ACkAAAHLdAA2b3JnLmVjbGlwc2UuamR0LmludGVybmFsLmp1bml0LnJ1bm5lci5SZW1vdGVUZXN0UnVubmVydAAVUmVtb3RlVGVzdFJ1bm5lci5qYXZhdAAIcnVuVGVzdHNzcQB+ACJzcQB+ACUBdAAELmNwL3EAfgAoc3EAfgApAAACo3EAfgCrcQB+AKxxAH4ArXNxAH4AInNxAH4AJQF0AAQuY3AvcQB+AChzcQB+ACkAAAF+cQB+AKtxAH4ArHEAfgBRc3EAfgAic3EAfgAlAXQABC5jcC9xAH4AKHNxAH4AKQAAAMBxAH4Aq3EAfgCsdAAEbWFpbnQAFk9NRyBJJ3ZlIGJlZW4gZGVsZXRlZCFxAH4
 Au3QARW9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5jb3JlLmltcGwuTG9nNGpMb2dFdmVudFRlc3QkRGVsZXRlZEV4Y2VwdGlvbnVyADRbTG9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5jb3JlLmltcGwuVGhyb3dhYmxlUHJveHk7+u0B4IWi6zkCAAB4cAAAAAA=";
 
         final byte[] binaryDecoded = DatatypeConverter.parseBase64Binary(base64);
         final Log4jLogEvent evt2 = deserialize(binaryDecoded);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadIdFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadIdFilter.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadIdFilter.java
new file mode 100644
index 0000000..d00edb2
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadIdFilter.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.net.server;
+
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.filter.AbstractFilter;
+
+/**
+ * TODO Should use thread ID cache?
+ * @since 2.6
+ */
+public class ThreadIdFilter extends AbstractFilter {
+
+    private static final long serialVersionUID = 1L;
+
+    public ThreadIdFilter(final Result onMatch, final Result onMismatch) {
+        super(onMatch, onMismatch);
+    }
+
+    @Override
+    public Filter.Result filter(final LogEvent event) {
+        return event.getThreadId() == Thread.currentThread().getId() ? onMatch : onMismatch;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadPriorityFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadPriorityFilter.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadPriorityFilter.java
new file mode 100644
index 0000000..7c9c734
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadPriorityFilter.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.net.server;
+
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.filter.AbstractFilter;
+
+/**
+ * TODO Should use thread priority cache?
+ * @since 2.6
+ */
+public class ThreadPriorityFilter extends AbstractFilter {
+
+    private static final long serialVersionUID = 1L;
+
+    public ThreadPriorityFilter(final Result onMatch, final Result onMismatch) {
+        super(onMatch, onMismatch);
+    }
+
+    @Override
+    public Filter.Result filter(final LogEvent event) {
+        return event.getThreadPriority() == Thread.currentThread().getPriority() ? onMatch : onMismatch;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
index b01f2bc..2545f88 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
@@ -253,11 +253,44 @@ public class PatternParserTest {
         testThreadNamePattern("%threadName");
     }
 
+    @Test
+    public void testThreadIdFullPattern() {
+        testThreadIdPattern("%threadId");
+    }
+
+    @Test
+    public void testThreadIdShortPattern() {
+        testThreadIdPattern("%tid");
+    }
+
+    @Test
+    public void testThreadPriorityShortPattern() {
+        testThreadPriorityPattern("%tp");
+    }
+
+    @Test
+    public void testThreadPriorityFullPattern() {
+        testThreadPriorityPattern("%threadPriority");
+    }
+
+    private void testThreadIdPattern(final String pattern) {
+        testFirstConverter(pattern, ThreadIdPatternConverter.class);
+    }
+
     private void testThreadNamePattern(final String pattern) {
+        testFirstConverter(pattern, ThreadNamePatternConverter.class);
+    }
+
+    private void testThreadPriorityPattern(final String pattern) {
+        testFirstConverter(pattern, ThreadPriorityPatternConverter.class);
+    }
+
+    private void testFirstConverter(final String pattern, Class<?> checkClass) {
         final List<PatternFormatter> formatters = parser.parse(pattern);
         assertNotNull(formatters);
-        assertEquals(1, formatters.size());
-        assertTrue(formatters.get(0).getConverter() instanceof ThreadPatternConverter);
+        final String msg = formatters.toString();
+        assertEquals(msg, 1, formatters.size());
+        assertTrue(msg, checkClass.isInstance(formatters.get(0).getConverter()));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverterTest.java
new file mode 100644
index 0000000..b608df8
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverterTest.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.pattern;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ *
+ */
+public class ThreadIdPatternConverterTest {
+
+    @Test
+    public void testConverterAppendsLogEventNanoTimeToStringBuilder() {
+        final LogEvent event = Log4jLogEvent.newBuilder() //
+                .setThreadId(1).build();
+        final StringBuilder sb = new StringBuilder();
+        final ThreadIdPatternConverter converter = ThreadIdPatternConverter.newInstance(null);
+        converter.format(event, sb);
+        assertEquals("1", sb.toString());
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
index 6b5dfc6..1ae94d2 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
@@ -32,7 +32,7 @@ public class ThreadNamePatternConverterTest {
         final LogEvent event = Log4jLogEvent.newBuilder() //
                 .setThreadName("Hello-1").build();
         final StringBuilder sb = new StringBuilder();
-        final ThreadPatternConverter converter = ThreadPatternConverter.newInstance(null);
+        final ThreadNamePatternConverter converter = ThreadNamePatternConverter.newInstance(null);
         converter.format(event, sb);
         assertEquals("Hello-1", sb.toString());
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverterTest.java
new file mode 100644
index 0000000..37db555
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadPriorityPatternConverterTest.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.pattern;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ *
+ */
+public class ThreadPriorityPatternConverterTest {
+
+    @Test
+    public void testConverterAppendsLogEventNanoTimeToStringBuilder() {
+        final LogEvent event = Log4jLogEvent.newBuilder() //
+                .setThreadPriority(1).build();
+        final StringBuilder sb = new StringBuilder();
+        final ThreadPriorityPatternConverter converter = ThreadPriorityPatternConverter.newInstance(null);
+        converter.format(event, sb);
+        assertEquals("1", sb.toString());
+    }
+}


[44/50] [abbrv] logging-log4j2 git commit: Fix typo

Posted by rp...@apache.org.
Fix typo


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: f030c68fb4fe4fa376fe32f3d49ec43e4cf06bcd
Parents: df0270a
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 22:33:50 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 22:33:50 2016 -0600

----------------------------------------------------------------------
 src/changes/changes.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f030c68f/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5066c0a..434c3ab 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -185,7 +185,7 @@
         JeroMqAppender should support layouts.
       </action>
       <action issue="LOG4J2-1227" dev="mattsicker" type="fix" due-to="Olivier Lemasle">
-        NullPointerException in MapLookup.lookup is the event is null.
+        NullPointerException in MapLookup.lookup if the event is null.
       </action>
       <action issue="LOG4J2-1306" dev="mattsicker" type="update">
         JeroMqAppender should use ShutdownCallbackRegistry instead of runtime hooks.


[19/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id and priority in PatternLayout.

Posted by rp...@apache.org.
[LOG4J2-1299] Add pattern converter for thread id and priority in
PatternLayout.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 0d1df6929550072fab1385df0231955db651f731
Parents: e9917fd
Author: ggregory <gg...@apache.org>
Authored: Tue Mar 1 10:49:05 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Tue Mar 1 10:49:05 2016 -0800

----------------------------------------------------------------------
 .../apache/logging/log4j/core/pattern/PatternParserTest.java  | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0d1df692/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
index 2545f88..62ff668 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
@@ -259,11 +259,16 @@ public class PatternParserTest {
     }
 
     @Test
-    public void testThreadIdShortPattern() {
+    public void testThreadIdShortPattern1() {
         testThreadIdPattern("%tid");
     }
 
     @Test
+    public void testThreadIdShortPattern2() {
+        testThreadIdPattern("%T");
+    }
+
+    @Test
     public void testThreadPriorityShortPattern() {
         testThreadPriorityPattern("%tp");
     }


[14/50] [abbrv] logging-log4j2 git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/logging-log4j2.git

Posted by rp...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/logging-log4j2.git

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 0434a271338a0f2defa345f5570cff9544be7693
Parents: 82d2722 8717cad
Author: ggregory <gg...@apache.org>
Authored: Tue Mar 1 07:50:07 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Tue Mar 1 07:50:07 2016 -0800

----------------------------------------------------------------------
 .../logging/log4j/core/LoggerContext.java       |  1 -
 .../core/appender/db/jdbc/JdbcAppender.java     |  1 -
 .../log4j/core/appender/db/jpa/JpaAppender.java |  1 -
 .../log4j/core/appender/mom/JmsAppender.java    |  1 -
 .../appender/mom/jeromq/JeroMqAppender.java     |  2 -
 .../core/appender/mom/kafka/KafkaAppender.java  | 10 +-
 .../core/appender/rewrite/RewriteAppender.java  |  2 -
 .../core/appender/routing/IdlePurgePolicy.java  | 99 ++++++++++----------
 .../core/appender/routing/RoutingAppender.java  |  1 -
 .../log4j/core/config/DefaultAdvertiser.java    |  5 +-
 .../core/config/json/JsonConfiguration.java     | 21 ++---
 .../properties/PropertiesConfiguration.java     |  6 +-
 .../log4j/core/config/xml/XmlConfiguration.java |  2 -
 .../core/config/yaml/YamlConfiguration.java     |  2 -
 .../util/DefaultShutdownCallbackRegistry.java   |  4 +-
 .../logging/log4j/core/util/KeyValuePair.java   | 22 +----
 .../logging/log4j/core/util/WatchManager.java   | 11 +--
 .../log4j/web/Log4jWebInitializerImpl.java      |  2 -
 .../log4j/web/appender/ServletAppender.java     |  2 -
 src/changes/changes.xml                         |  3 +
 20 files changed, 75 insertions(+), 123 deletions(-)
----------------------------------------------------------------------



[43/50] [abbrv] logging-log4j2 git commit: LOG4J2-1217 - PatternLayout option to limit length of text.

Posted by rp...@apache.org.
LOG4J2-1217 - PatternLayout option to limit length of text.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: df0270af2ec4f4ad64474a778f5d9b2731d4cce9
Parents: ee4573b
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 22:32:31 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 22:32:31 2016 -0600

----------------------------------------------------------------------
 .../log4j/core/pattern/MaxLengthConverter.java  | 103 +++++++++++++++++++
 .../core/pattern/MaxLengthConverterTest.java    |  73 +++++++++++++
 src/changes/changes.xml                         |   3 +
 src/site/xdoc/manual/layouts.xml.vm             |  38 +++++++
 4 files changed, 217 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/df0270af/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MaxLengthConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MaxLengthConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MaxLengthConverter.java
new file mode 100644
index 0000000..ca053f2
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MaxLengthConverter.java
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.pattern;
+
+import java.util.List;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.appender.AbstractAppender;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.layout.PatternLayout;
+
+/**
+ * Max length pattern converter. Limit contained text to a maximum length.
+ * On invalid length the default value 100 is used (and an error message is logged).
+ * If max length is greater than 20, an abbreviated text will get ellipsis ("...") appended.
+ * Example usage (for email subject):
+ * {@code "%maxLen{[AppName, ${hostName}, ${web:contextPath}] %p: %c{1} - %m%notEmpty{ =>%ex{short}}}{160}"}
+ *
+ * @author Thies Wellpott
+ */
+@Plugin(name = "maxLength", category = PatternConverter.CATEGORY)
+@ConverterKeys({"maxLength", "maxLen"})
+public final class MaxLengthConverter extends LogEventPatternConverter {
+
+    /**
+     * Gets an instance of the class.
+     *
+     * @param config  The current Configuration.
+     * @param options pattern options, an array of two elements: pattern, max length (defaults to 100 on invalid value).
+     * @return instance of class.
+     */
+    public static MaxLengthConverter newInstance(final Configuration config, final String[] options) {
+        if (options.length != 2) {
+            LOGGER.error("Incorrect number of options on maxLength: expected 2 received {}: {}", options.length,
+                options);
+            return null;
+        }
+        if (options[0] == null) {
+            LOGGER.error("No pattern supplied on maxLength");
+            return null;
+        }
+        if (options[1] == null) {
+            LOGGER.error("No length supplied on maxLength");
+            return null;
+        }
+        final PatternParser parser = PatternLayout.createPatternParser(config);
+        final List<PatternFormatter> formatters = parser.parse(options[0]);
+        return new MaxLengthConverter(formatters, AbstractAppender.parseInt(options[1], 100));
+    }
+
+
+    private final List<PatternFormatter> formatters;
+    private final int maxLength;
+
+    /**
+     * Construct the converter.
+     *
+     * @param formatters The PatternFormatters to generate the text to manipulate.
+     * @param maxLength  The max. length of the resulting string. Ellipsis ("...") is appended on shorted string, if greater than 20.
+     */
+    private MaxLengthConverter(final List<PatternFormatter> formatters, final int maxLength) {
+        super("MaxLength", "maxLength");
+        this.maxLength = maxLength;
+        this.formatters = formatters;
+        LOGGER.trace("new MaxLengthConverter with {}", maxLength);
+    }
+
+
+    @Override
+    public void format(final LogEvent event, final StringBuilder toAppendTo) {
+        final StringBuilder buf = new StringBuilder();
+        for (final PatternFormatter formatter : formatters) {
+            formatter.format(event, buf);
+            if (buf.length() > maxLength) {        // stop early
+                break;
+            }
+        }
+        if (buf.length() > maxLength) {
+            buf.setLength(maxLength);
+            if (maxLength > 20) {        // only append ellipses if length is not very short
+                buf.append("...");
+            }
+        }
+        toAppendTo.append(buf);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/df0270af/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MaxLengthConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MaxLengthConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MaxLengthConverterTest.java
new file mode 100644
index 0000000..e379915
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MaxLengthConverterTest.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.pattern;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.message.Message;
+import org.apache.logging.log4j.message.SimpleMessage;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ *
+ */
+public class MaxLengthConverterTest {
+
+    private static MaxLengthConverter converter = MaxLengthConverter.newInstance(null, new String[]{"%m", "10"});
+
+    @Test
+    public void testUnderMaxLength() throws Exception {
+        final Message message = new SimpleMessage("0123456789");
+        final LogEvent event = Log4jLogEvent.newBuilder()
+            .setLoggerName("MyLogger")
+            .setLevel(Level.DEBUG)
+            .setMessage(message)
+            .build();
+        final StringBuilder sb = new StringBuilder();
+        converter.format(event, sb);
+        assertEquals("0123456789", sb.toString());
+    }
+
+    @Test
+    public void testOverMaxLength() throws Exception {
+        final Message message = new SimpleMessage("01234567890123456789");
+        final LogEvent event = Log4jLogEvent.newBuilder()
+            .setLoggerName("MyLogger")
+            .setLevel(Level.DEBUG)
+            .setMessage(message)
+            .build();
+        final StringBuilder sb = new StringBuilder();
+        converter.format(event, sb);
+        assertEquals("0123456789", sb.toString());
+    }
+    @Test
+    public void testOverMaxLength21WithEllipsis() throws Exception {
+        final Message message = new SimpleMessage("012345678901234567890123456789");
+        final LogEvent event = Log4jLogEvent.newBuilder()
+            .setLoggerName("MyLogger")
+            .setLevel(Level.DEBUG)
+            .setMessage(message)
+            .build();
+        final StringBuilder sb = new StringBuilder();
+        MaxLengthConverter.newInstance(null, new String[]{"%m", "21"}).format(event, sb);
+        assertEquals("012345678901234567890...", sb.toString());
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/df0270af/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index aa6581c..5066c0a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -190,6 +190,9 @@
       <action issue="LOG4J2-1306" dev="mattsicker" type="update">
         JeroMqAppender should use ShutdownCallbackRegistry instead of runtime hooks.
       </action>
+      <action issue="LOG4J2-1217" dev="mattsicker" type="add" due-to="Thies Wellpott">
+        PatternLayout option to limit length of text.
+      </action>
     </release>
     <release version="2.5" date="2015-12-06" description="GA Release 2.5">
       <action issue="LOG4J2-324" dev="rpopma" type="fix">

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/df0270af/src/site/xdoc/manual/layouts.xml.vm
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/layouts.xml.vm b/src/site/xdoc/manual/layouts.xml.vm
index fa602e4..d193380 100644
--- a/src/site/xdoc/manual/layouts.xml.vm
+++ b/src/site/xdoc/manual/layouts.xml.vm
@@ -910,6 +910,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternMap"/>
                 <b>K</b>{key}<br />
                 <b>map</b>{key}<br />
                 <b>MAP</b>{key}
@@ -957,6 +958,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternMessage"/>
                 <b>m</b><br />
                 <b>msg</b><br />
                 <b>message</b>
@@ -977,18 +979,40 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternMarker"/>
                 <b>marker</b>
               </td>
               <td>The full name of the marker, including parents, if one is present.</td>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternMarkerSimpleName"/>
                 <b>markerSimpleName</b>
               </td>
               <td>The simple name of the marker (not including parents), if one is present.</td>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternMaxLength"/>
+                <b>maxLen</b><br/>
+                <b>maxLength</b>
+              </td>
+              <td>
+                <p>
+                  Outputs the result of evaluating the pattern and truncating the result. If the length is greater
+                  than 20, then the output will contain a trailing ellipsis. If the provided length is invalid, a
+                  default value of 100 is used.
+                </p>
+                <p>
+                  Example syntax: <code>%maxLen{%p: %c{1} - %m%notEmpty{ =>%ex{short}}}{160}</code> will be limited to
+                  160 characters with a trailing ellipsis. Another example: <code>%maxLen{%m}{20}</code> will be
+                  limited to 20 characters and no trailing ellipsis.
+                </p>
+              </td>
+            </tr>
+            <tr>
+              <td align="center">
+                <a name="PatternNewLine"/>
                 <b>n</b>
               </td>
               <td>
@@ -1029,6 +1053,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternLevel"/>
                 <b>p</b>|<b>level</b>{<em>level</em>=<em>label</em>, <em>level</em>=<em>label</em>, ...}
                 <b>p</b>|<b>level</b>{length=<em>n</em>}
                 <b>p</b>|<b>level</b>{lowerCase=<em>true</em>|<em>false</em>}
@@ -1065,6 +1090,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternRelative"/>
                 <b>r</b><br />
                 <b>relative</b>
               </td>
@@ -1074,6 +1100,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternReplace"/>
                 <b>replace</b>{pattern}{regex}{substitution}
               </td>
               <td>
@@ -1089,6 +1116,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternException"/>
                 <b>rEx</b>["none"|"short"|"full"|depth],[filters(packages)}<br />
                 <b>rException</b>["none"|"short"|"full"|depth],[filters(packages)}<br />
                 <b>rThrowable</b>["none"|"short"|"full"|depth],[filters(packages)}
@@ -1109,6 +1137,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternSequenceNumber"/>
                 <b>sn</b><br />
                 <b>sequenceNumber</b>
               </td>
@@ -1118,6 +1147,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternStyle"/>
                 <b>style</b>{pattern}{ANSI style}
               </td>
               <td>
@@ -1239,6 +1269,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternThreadId"/>
                 <b>T</b><br />
                 <b>tid</b><br />
                 <b>threadId</b>
@@ -1247,6 +1278,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternThreadName"/>
                 <b>t</b><br />
                 <b>thread</b><br />
                 <b>threadName</b>
@@ -1255,6 +1287,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternThreadPriority"/>
                 <b>tp</b><br />
                 <b>threadPriority</b>
               </td>
@@ -1262,6 +1295,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternNDC"/>
                 <b>x</b><br />
                 <b>NDC</b>
               </td>
@@ -1271,6 +1305,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternMDC"/>
                 <b>X</b>{key[,key2...]}<br />
                 <b>mdc</b>{key[,key2...]}<br />
                 <b>MDC</b>{key[,key2...]}
@@ -1300,6 +1335,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternUUID"/>
                 <b>u</b>{"RANDOM" | "TIME"}<br />
                 <b>uuid</b>
               </td>
@@ -1314,6 +1350,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternExtendedException"/>
                 <b>xEx</b>{"none"|"short"|"full"|depth],[filters(packages)}<br />
                 <b>xException</b>["none"|"short"|"full"|depth],[filters(packages)}<br />
                 <b>xThrowable</b>["none"|"short"|"full"|depth],[filters(packages)}
@@ -1338,6 +1375,7 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <a name="PatternPercentLiteral"/>
                 <b>%</b>
               </td>
               <td>The sequence %% outputs a single percent sign.


[12/50] [abbrv] logging-log4j2 git commit: Add changelog entry for LOG4J2-1300.

Posted by rp...@apache.org.
Add changelog entry for LOG4J2-1300.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 8717cad0429832304c35fe9d3a9b0dec968afcdc
Parents: ac3e721
Author: Matt Sicker <bo...@gmail.com>
Authored: Tue Mar 1 09:38:06 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Tue Mar 1 09:38:06 2016 -0600

----------------------------------------------------------------------
 src/changes/changes.xml | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8717cad0/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index e9b75b5..d1e92fe 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -163,6 +163,9 @@
       <action issue="LOG4J2-920" dev="mattsicker" type="fix" due-to="Ludovic Hochet">
         ClassNotFoundException for BundleContextSelector when initialising in an OSGi environment.
       </action>
+      <action issue="LOG4J2-1300" dev="mattsicker" type="update">
+        Remove serializability from classes that don't need it.
+      </action>
     </release>
     <release version="2.5" date="2015-12-06" description="GA Release 2.5">
       <action issue="LOG4J2-324" dev="rpopma" type="fix">


[36/50] [abbrv] logging-log4j2 git commit: LOG4J2-1252 - JeroMqAppender should support layouts

Posted by rp...@apache.org.
LOG4J2-1252 - JeroMqAppender should support layouts


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 60d1ccd9349e4601464d53926595146a59ac4beb
Parents: ebc53bb
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 20:42:04 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 20:42:04 2016 -0600

----------------------------------------------------------------------
 .../logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java  | 5 +++--
 src/changes/changes.xml                                         | 3 +++
 2 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/60d1ccd9/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
index 974477b..99968e4 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
@@ -244,8 +244,9 @@ public final class JeroMqAppender extends AbstractAppender {
 
     @Override
     public synchronized void append(final LogEvent event) {
-        final String formattedMessage = event.getMessage().getFormattedMessage();
-        if (getPublisher().send(formattedMessage, 0)) {
+        final Layout<? extends Serializable> layout = getLayout();
+        final byte[] formattedMessage = layout.toByteArray(event);
+        if (getPublisher().send(getLayout().toByteArray(event))) {
             sendRcTrue++;
         } else {
             sendRcFalse++;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/60d1ccd9/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 30f7a67..646a41f 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -181,6 +181,9 @@
       <action issue="LOG4J2-1262" dev="mattsicker" type="fix">
         Stop throwing unnecessary exception in Log4jServletContextListener.contextDestroyed().
       </action>
+      <action issue="LOG4J2-1252" dev="mattsicker" type="add">
+        JeroMqAppender should support layouts.
+      </action>
     </release>
     <release version="2.5" date="2015-12-06" description="GA Release 2.5">
       <action issue="LOG4J2-324" dev="rpopma" type="fix">


[03/50] [abbrv] logging-log4j2 git commit: Revert "[LOG4J2-1300] Make AbstractManager Serializable."

Posted by rp...@apache.org.
Revert "[LOG4J2-1300] Make AbstractManager Serializable."

This reverts commit 64d33fd411ca017959f5bf41f84d9fe9a91fd5ae.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: ea85196d32a5ed6652d5b832ae0aa27b3745b563
Parents: 96f0aa9
Author: Matt Sicker <bo...@gmail.com>
Authored: Mon Feb 29 19:09:17 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Mon Feb 29 19:14:36 2016 -0600

----------------------------------------------------------------------
 .../org/apache/logging/log4j/core/appender/AbstractManager.java  | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ea85196d/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
index 46910f0..45f5141 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.locks.Lock;
@@ -30,8 +29,7 @@ import org.apache.logging.log4j.status.StatusLogger;
 /**
  * Abstract base class used to register managers.
  */
-public abstract class AbstractManager implements Serializable {
-    private static final long serialVersionUID = 1L;
+public abstract class AbstractManager {
 
     /**
      * Allow subclasses access to the status logger without creating another instance.


[40/50] [abbrv] logging-log4j2 git commit: LOG4J2-1306 - JeroMqAppender should use ShutdownCallbackRegistry instead of runtime hooks

Posted by rp...@apache.org.
LOG4J2-1306 - JeroMqAppender should use ShutdownCallbackRegistry instead of runtime hooks


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: a6af67c5d6faee5b4d422add674e4c518c33d528
Parents: aaf734c
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 21:24:06 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 21:24:06 2016 -0600

----------------------------------------------------------------------
 .../log4j/core/appender/mom/jeromq/JeroMqAppender.java    | 10 +++++-----
 src/changes/changes.xml                                   |  3 +++
 2 files changed, 8 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a6af67c5/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
index 99968e4..058427f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
@@ -34,7 +35,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
 import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.apache.logging.log4j.core.util.Log4jThread;
+import org.apache.logging.log4j.core.util.ShutdownCallbackRegistry;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.PropertiesUtil;
 import org.apache.logging.log4j.util.Strings;
@@ -93,14 +94,13 @@ public final class JeroMqAppender extends AbstractAppender {
         context = ZMQ.context(ioThreads);
         logger.trace("{} created ZMQ context {}", simpleName, context);
         if (enableShutdownHook) {
-            final Thread hook = new Log4jThread(simpleName + "-shutdown") {
+            logger.trace("{} adding shutdown hook", simpleName);
+            ((ShutdownCallbackRegistry) LogManager.getFactory()).addShutdownCallback(new Runnable() {
                 @Override
                 public void run() {
                     shutdown();
                 }
-            };
-            logger.trace("{} adding shutdown hook {}", simpleName, hook);
-            Runtime.getRuntime().addShutdownHook(hook);
+            });
         }
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a6af67c5/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 80a67f7..aa6581c 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -187,6 +187,9 @@
       <action issue="LOG4J2-1227" dev="mattsicker" type="fix" due-to="Olivier Lemasle">
         NullPointerException in MapLookup.lookup is the event is null.
       </action>
+      <action issue="LOG4J2-1306" dev="mattsicker" type="update">
+        JeroMqAppender should use ShutdownCallbackRegistry instead of runtime hooks.
+      </action>
     </release>
     <release version="2.5" date="2015-12-06" description="GA Release 2.5">
       <action issue="LOG4J2-324" dev="rpopma" type="fix">


[10/50] [abbrv] logging-log4j2 git commit: Formatting nit.

Posted by rp...@apache.org.
Formatting nit.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 88f04e3ea027d86490a96c2c0ef594a65fd565b1
Parents: 7da2fa1
Author: Matt Sicker <bo...@gmail.com>
Authored: Tue Mar 1 09:35:38 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Tue Mar 1 09:35:38 2016 -0600

----------------------------------------------------------------------
 .../core/appender/routing/IdlePurgePolicy.java  | 98 ++++++++++----------
 1 file changed, 48 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/88f04e3e/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index fc1921d..fe62783 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -35,9 +35,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 import org.apache.logging.log4j.status.StatusLogger;
 
 /**
- * 
  * Policy is purging appenders that were not in use specified time in minutes
- *
  */
 @Plugin(name = "IdlePurgePolicy", category = "Core", printObject = true)
 @Scheduled
@@ -46,20 +44,20 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
     private static final Logger LOGGER = StatusLogger.getLogger();
     private static final long serialVersionUID = 7481062062560624564L;
     private final long timeToLive;
-	private final ConcurrentMap<String, Long> appendersUsage = new ConcurrentHashMap<>();
-	private RoutingAppender routingAppender;
+    private final ConcurrentMap<String, Long> appendersUsage = new ConcurrentHashMap<>();
+    private RoutingAppender routingAppender;
     private final ConfigurationScheduler scheduler;
     private volatile ScheduledFuture<?> future = null;
-    
-	public IdlePurgePolicy(long timeToLive, ConfigurationScheduler scheduler) {
-		this.timeToLive = timeToLive;
+
+    public IdlePurgePolicy(long timeToLive, ConfigurationScheduler scheduler) {
+        this.timeToLive = timeToLive;
         this.scheduler = scheduler;
-	}	
+    }
 
     @Override
-	public void initialize(RoutingAppender routingAppender) {
-		this.routingAppender = routingAppender;
-	}
+    public void initialize(RoutingAppender routingAppender) {
+        this.routingAppender = routingAppender;
+    }
 
     @Override
     public void stop() {
@@ -67,35 +65,34 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
         future.cancel(true);
     }
 
-	/**
-	 * Purging appenders that were not in use specified time
-	 * 
-	 */
-	@Override
-	public void purge() {
-		long createTime = System.currentTimeMillis() - timeToLive;
-    	for (Entry<String, Long> entry : appendersUsage.entrySet()) {
-			if (entry.getValue() < createTime) {
+    /**
+     * Purging appenders that were not in use specified time
+     */
+    @Override
+    public void purge() {
+        long createTime = System.currentTimeMillis() - timeToLive;
+        for (Entry<String, Long> entry : appendersUsage.entrySet()) {
+            if (entry.getValue() < createTime) {
                 LOGGER.debug("Removing appender " + entry.getKey());
-				appendersUsage.remove(entry.getKey());
-		       	routingAppender.deleteAppender(entry.getKey());
-			}
-		}
-	}
-
-	@Override
-	public void update(String key, LogEvent event) {
+                appendersUsage.remove(entry.getKey());
+                routingAppender.deleteAppender(entry.getKey());
+            }
+        }
+    }
+
+    @Override
+    public void update(String key, LogEvent event) {
         long now = System.currentTimeMillis();
-		appendersUsage.put(key, now);
+        appendersUsage.put(key, now);
         if (future == null) {
-            synchronized(this) {
+            synchronized (this) {
                 if (future == null) {
                     scheduleNext();
                 }
             }
         }
 
-	}
+    }
 
     @Override
     public void run() {
@@ -116,37 +113,38 @@ public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, R
         }
     }
 
-	/**
+    /**
      * Create the PurgePolicy
+     *
      * @param timeToLive the number of increments of timeUnit before the Appender should be purged.
-     * @param timeUnit the unit of time the timeToLive is expressed in.
+     * @param timeUnit   the unit of time the timeToLive is expressed in.
      * @return The Routes container.
      */
     @PluginFactory
     public static PurgePolicy createPurgePolicy(
-            @PluginAttribute("timeToLive") final String timeToLive,
-			@PluginAttribute("timeUnit") final String timeUnit,
-            @PluginConfiguration Configuration configuration) {
-    	
+        @PluginAttribute("timeToLive") final String timeToLive,
+        @PluginAttribute("timeUnit") final String timeUnit,
+        @PluginConfiguration Configuration configuration) {
+
         if (timeToLive == null) {
             LOGGER.error("A timeToLive  value is required");
             return null;
         }
-		TimeUnit units;
-		if (timeUnit == null) {
-			units = TimeUnit.MINUTES;
-		} else {
-			try {
-				units = TimeUnit.valueOf(timeUnit.toUpperCase());
-			} catch(Exception ex) {
-				LOGGER.error("Invalid time unit {}", timeUnit);
-				units = TimeUnit.MINUTES;
-			}
-		}
-        
+        TimeUnit units;
+        if (timeUnit == null) {
+            units = TimeUnit.MINUTES;
+        } else {
+            try {
+                units = TimeUnit.valueOf(timeUnit.toUpperCase());
+            } catch (Exception ex) {
+                LOGGER.error("Invalid time unit {}", timeUnit);
+                units = TimeUnit.MINUTES;
+            }
+        }
+
         final long ttl = units.toMillis(Long.parseLong(timeToLive));
 
-        
+
         return new IdlePurgePolicy(ttl, configuration.getScheduler());
     }
 


[23/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id and priority in PatternLayout.

Posted by rp...@apache.org.
[LOG4J2-1299] Add pattern converter for thread id and priority in
PatternLayout.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 9ebf07202e981a9a90a4b076486cd678d097b2a4
Parents: b2ec305
Author: ggregory <gg...@apache.org>
Authored: Tue Mar 1 16:55:56 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Tue Mar 1 16:55:56 2016 -0800

----------------------------------------------------------------------
 log4j-core/src/main/resources/Log4j-events.xsd | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/9ebf0720/log4j-core/src/main/resources/Log4j-events.xsd
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/resources/Log4j-events.xsd b/log4j-core/src/main/resources/Log4j-events.xsd
index 153302a..875df91 100644
--- a/log4j-core/src/main/resources/Log4j-events.xsd
+++ b/log4j-core/src/main/resources/Log4j-events.xsd
@@ -58,7 +58,9 @@
                         <xs:attribute name="timestamp" type="xs:long" use="required"/>
                         <xs:attribute name="nanoTime" type="xs:long" use="optional"/>
                         <xs:attribute name="level" type="log4j:LevelEnum" use="required"/>
+                        <xs:attribute name="threadId" type="xs:long" use="required"/>
                         <xs:attribute name="thread" type="xs:string" use="required"/>
+                        <xs:attribute name="threadProperty" type="xs:integer" use="required"/>
                     </xs:complexType>
                 </xs:element>
             </xs:sequence>


[46/50] [abbrv] logging-log4j2 git commit: LOG4J2-1296 simplified ReusableMessage interface

Posted by rp...@apache.org.
LOG4J2-1296 simplified ReusableMessage interface


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 406158c25a71b8f5c8e9d60760bc6ce30d8b84c9
Parents: f030c68
Author: rpopma <rp...@apache.org>
Authored: Thu Mar 3 23:43:49 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Thu Mar 3 23:43:49 2016 +0900

----------------------------------------------------------------------
 .../org/apache/logging/log4j/message/ReusableMessage.java   | 9 ++-------
 .../logging/log4j/message/ReusableParameterizedMessage.java | 5 -----
 .../org/apache/logging/log4j/core/async/AsyncLogger.java    | 4 ++--
 .../apache/logging/log4j/core/async/RingBufferLogEvent.java | 9 ++-------
 4 files changed, 6 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/406158c2/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessage.java
index 46e94f2..2613104 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessage.java
@@ -19,16 +19,11 @@ package org.apache.logging.log4j.message;
 import org.apache.logging.log4j.util.StringBuilderFormattable;
 
 /**
- * Messages implementing this interface may or may not be reused.
+ * Messages implementing this interface are reused.
  * <p>
- * If a Message is reused, downstream components should not hand over this instance to another thread, but extract its
+ * If a Message is reusable, downstream components should not hand over this instance to another thread, but extract its
  * content (via the {@link StringBuilderFormattable#formatTo(StringBuilder)} method) instead.
  * </p>
  */
 public interface ReusableMessage extends Message, StringBuilderFormattable {
-    /**
-     * Returns {@code true} if this instance is and will be reused
-     * @return whether this is a reused instance
-     */
-    boolean isReused();
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/406158c2/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
index b4a1e5c..79cca35 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
@@ -71,11 +71,6 @@ public class ReusableParameterizedMessage implements ReusableMessage {
     public ReusableParameterizedMessage() {
     }
 
-    @Override
-    public boolean isReused() {
-        return true;
-    }
-
     private InternalState getState() {
         InternalState result = state.get();
         if (result == null) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/406158c2/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
index 1a060d2..226ba08 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
@@ -166,7 +166,7 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf
     }
 
     private boolean isReused(final Message message) {
-        return message instanceof ReusableMessage && ((ReusableMessage) message).isReused();
+        return message instanceof ReusableMessage;
     }
 
     /**
@@ -253,7 +253,7 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf
 
                 currentThread.getPriority(), //
                 // location (expensive to calculate)
-                calcLocationIfRequested(fqcn), 
+                calcLocationIfRequested(fqcn),
                 eventTimeMillis(message), nanoClock.nanoTime() //
                 );
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/406158c2/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
index 37c7be0..a78582f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
@@ -67,11 +67,6 @@ public class RingBufferLogEvent implements LogEvent {
         private StringBuilder stringBuilder;
 
         @Override
-        public boolean isReused() {
-            return true;
-        }
-
-        @Override
         public String getFormattedMessage() {
             return null;
         }
@@ -137,7 +132,7 @@ public class RingBufferLogEvent implements LogEvent {
         this.marker = aMarker;
         this.fqcn = theFqcn;
         this.level = aLevel;
-        if (msg instanceof ReusableMessage && ((ReusableMessage) msg).isReused()) {
+        if (msg instanceof ReusableMessage) {
             if (messageText == null) {
                 // Should never happen:
                 // only happens if user logs a custom reused message when Constants.ENABLE_THREADLOCALS is false
@@ -336,7 +331,7 @@ public class RingBufferLogEvent implements LogEvent {
                 0, // threadName
                 null, // location
                 0, // currentTimeMillis
-                null, 
+                null,
                 0, 0 // nanoTime
         );
     }


[05/50] [abbrv] logging-log4j2 git commit: Revert "[LOG4J2-1300] Make pattern converters and dependencies serializable."

Posted by rp...@apache.org.
Revert "[LOG4J2-1300] Make pattern converters and dependencies serializable."

This reverts commit b7f6feaa52ea2cb3226e4f8d145161d3c45c2201.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 67069c106d296e2e3cbf48e10b2d682977a05fd9
Parents: 7c4b2c5
Author: Matt Sicker <bo...@gmail.com>
Authored: Mon Feb 29 19:09:57 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Mon Feb 29 19:14:36 2016 -0600

----------------------------------------------------------------------
 .../log4j/core/impl/ThrowableFormatOptions.java    |  4 +---
 .../core/pattern/AbstractPatternConverter.java     |  5 +----
 .../core/pattern/AbstractStyleNameConverter.java   | 17 -----------------
 .../core/pattern/ClassNamePatternConverter.java    |  1 -
 .../log4j/core/pattern/DatePatternConverter.java   | 16 ++--------------
 .../core/pattern/EncodingPatternConverter.java     |  1 -
 .../EqualsIgnoreCaseReplacementConverter.java      |  1 -
 .../core/pattern/EqualsReplacementConverter.java   |  1 -
 .../pattern/ExtendedThrowablePatternConverter.java |  1 -
 .../core/pattern/FileDatePatternConverter.java     |  5 +----
 .../core/pattern/FileLocationPatternConverter.java |  1 -
 .../logging/log4j/core/pattern/FormattingInfo.java |  6 +-----
 .../core/pattern/FullLocationPatternConverter.java |  1 -
 .../log4j/core/pattern/HighlightConverter.java     |  1 -
 .../core/pattern/IntegerPatternConverter.java      |  1 -
 .../log4j/core/pattern/LevelPatternConverter.java  |  1 -
 .../core/pattern/LineLocationPatternConverter.java |  1 -
 .../pattern/LineSeparatorPatternConverter.java     |  1 -
 .../core/pattern/LiteralPatternConverter.java      |  1 -
 .../core/pattern/LogEventPatternConverter.java     |  1 -
 .../log4j/core/pattern/LoggerPatternConverter.java |  1 -
 .../log4j/core/pattern/MapPatternConverter.java    |  1 -
 .../log4j/core/pattern/MarkerPatternConverter.java |  1 -
 .../pattern/MarkerSimpleNamePatternConverter.java  |  1 -
 .../log4j/core/pattern/MdcPatternConverter.java    |  1 -
 .../core/pattern/MessagePatternConverter.java      |  2 +-
 .../pattern/MethodLocationPatternConverter.java    |  1 -
 .../log4j/core/pattern/NameAbbreviator.java        | 10 ++--------
 .../log4j/core/pattern/NamePatternConverter.java   |  1 -
 .../core/pattern/NanoTimePatternConverter.java     |  1 -
 .../log4j/core/pattern/NdcPatternConverter.java    |  1 -
 .../log4j/core/pattern/PatternFormatter.java       |  6 +-----
 .../core/pattern/RegexReplacementConverter.java    |  1 -
 .../core/pattern/RelativeTimePatternConverter.java |  1 -
 .../pattern/RootThrowablePatternConverter.java     |  1 -
 .../pattern/SequenceNumberPatternConverter.java    |  1 -
 .../logging/log4j/core/pattern/StyleConverter.java |  1 -
 .../log4j/core/pattern/ThreadPatternConverter.java |  1 -
 .../core/pattern/ThrowablePatternConverter.java    |  1 -
 .../log4j/core/pattern/UuidPatternConverter.java   |  1 -
 .../VariablesNotEmptyReplacementConverter.java     |  1 -
 .../log4j/core/util/datetime/FixedDateFormat.java  |  5 +----
 42 files changed, 11 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableFormatOptions.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableFormatOptions.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableFormatOptions.java
index e6de6b1..d5e0285 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableFormatOptions.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableFormatOptions.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.impl;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Scanner;
@@ -28,8 +27,7 @@ import org.apache.logging.log4j.util.Strings;
 /**
  * Contains options which control how a {@link Throwable} pattern is formatted.
  */
-public final class ThrowableFormatOptions implements Serializable {
-    private static final long serialVersionUID = 1L;
+public final class ThrowableFormatOptions {
 
     private static final int DEFAULT_LINES = Integer.MAX_VALUE;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractPatternConverter.java
index 9ca7d83..2118bd7 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractPatternConverter.java
@@ -16,8 +16,6 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.io.Serializable;
-
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.status.StatusLogger;
 
@@ -29,8 +27,7 @@ import org.apache.logging.log4j.status.StatusLogger;
  * responsible for converting an object in a converter specific manner.
  * </p>
  */
-public abstract class AbstractPatternConverter implements PatternConverter, Serializable {
-    private static final long serialVersionUID = 1L;
+public abstract class AbstractPatternConverter implements PatternConverter {
     /**
      * Allow subclasses access to the status logger.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java
index a3eb184..c15c9fc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java
@@ -30,7 +30,6 @@ import org.apache.logging.log4j.core.layout.PatternLayout;
  * Style pattern converter. Adds ANSI color styling to the result of the enclosed pattern.
  */
 public abstract class AbstractStyleNameConverter extends LogEventPatternConverter /*TODO: implements AnsiConverter*/ {
-    private static final long serialVersionUID = 1L;
 
     private final List<PatternFormatter> formatters;
 
@@ -56,8 +55,6 @@ public abstract class AbstractStyleNameConverter extends LogEventPatternConverte
     @ConverterKeys(Black.NAME)
     public static final class Black extends AbstractStyleNameConverter {
 
-        private static final long serialVersionUID = 1L;
-
         /** Black */
         protected static final String NAME = "black";
 
@@ -91,8 +88,6 @@ public abstract class AbstractStyleNameConverter extends LogEventPatternConverte
     @ConverterKeys(Blue.NAME)
     public static final class Blue extends AbstractStyleNameConverter {
 
-        private static final long serialVersionUID = 1L;
-
         /** Blue */
         protected static final String NAME = "blue";
 
@@ -126,8 +121,6 @@ public abstract class AbstractStyleNameConverter extends LogEventPatternConverte
     @ConverterKeys(Cyan.NAME)
     public static final class Cyan extends AbstractStyleNameConverter {
 
-        private static final long serialVersionUID = 1L;
-
         /** Cyan */
         protected static final String NAME = "cyan";
 
@@ -161,8 +154,6 @@ public abstract class AbstractStyleNameConverter extends LogEventPatternConverte
     @ConverterKeys(Green.NAME)
     public static final class Green extends AbstractStyleNameConverter {
 
-        private static final long serialVersionUID = 1L;
-
         /** Green */
         protected static final String NAME = "green";
 
@@ -196,8 +187,6 @@ public abstract class AbstractStyleNameConverter extends LogEventPatternConverte
     @ConverterKeys(Magenta.NAME)
     public static final class Magenta extends AbstractStyleNameConverter {
 
-        private static final long serialVersionUID = 1L;
-
         /** Magenta */
         protected static final String NAME = "magenta";
 
@@ -231,8 +220,6 @@ public abstract class AbstractStyleNameConverter extends LogEventPatternConverte
     @ConverterKeys(Red.NAME)
     public static final class Red extends AbstractStyleNameConverter {
 
-        private static final long serialVersionUID = 1L;
-
         /** Red */
         protected static final String NAME = "red";
 
@@ -266,8 +253,6 @@ public abstract class AbstractStyleNameConverter extends LogEventPatternConverte
     @ConverterKeys(White.NAME)
     public static final class White extends AbstractStyleNameConverter {
 
-        private static final long serialVersionUID = 1L;
-
         /** White */
         protected static final String NAME = "white";
 
@@ -301,8 +286,6 @@ public abstract class AbstractStyleNameConverter extends LogEventPatternConverte
     @ConverterKeys(Yellow.NAME)
     public static final class Yellow extends AbstractStyleNameConverter {
 
-        private static final long serialVersionUID = 1L;
-
         /** Yellow */
         protected static final String NAME = "yellow";
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java
index 62bdee9..a2e0f2a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java
@@ -26,7 +26,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "ClassNamePatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "C", "class" })
 public final class ClassNamePatternConverter extends NamePatternConverter {
-    private static final long serialVersionUID = 1L;
 
     private static final String NA = "?";
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
index d36146a..9fdfcd8 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.Objects;
@@ -36,11 +35,8 @@ import org.apache.logging.log4j.core.util.datetime.FixedDateFormat.FixedFormat;
 @Plugin(name = "DatePatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({"d", "date"})
 public final class DatePatternConverter extends LogEventPatternConverter implements ArrayPatternConverter {
-    private static final long serialVersionUID = 1L;
-
-    private abstract static class Formatter implements Serializable {
-        private static final long serialVersionUID = 1L;
 
+    private abstract static class Formatter {
         long previousTime; // for ThreadLocal caching mode
 
         abstract String format(long timeMillis);
@@ -53,8 +49,6 @@ public final class DatePatternConverter extends LogEventPatternConverter impleme
     }
 
     private static final class PatternFormatter extends Formatter {
-        private static final long serialVersionUID = 1L;
-
         private final FastDateFormat fastDateFormat;
 
         // this field is only used in ThreadLocal caching mode
@@ -85,8 +79,6 @@ public final class DatePatternConverter extends LogEventPatternConverter impleme
     }
 
     private static final class FixedFormatter extends Formatter {
-        private static final long serialVersionUID = 1L;
-
         private final FixedDateFormat fixedDateFormat;
 
         // below fields are only used in ThreadLocal caching mode
@@ -117,7 +109,6 @@ public final class DatePatternConverter extends LogEventPatternConverter impleme
     }
 
     private static final class UnixFormatter extends Formatter {
-        private static final long serialVersionUID = 1L;
 
         @Override
         String format(final long timeMillis) {
@@ -131,7 +122,6 @@ public final class DatePatternConverter extends LogEventPatternConverter impleme
     }
 
     private static final class UnixMillisFormatter extends Formatter {
-        private static final long serialVersionUID = 1L;
 
         @Override
         String format(final long timeMillis) {
@@ -144,9 +134,7 @@ public final class DatePatternConverter extends LogEventPatternConverter impleme
         }
     }
 
-    private final class CachedTime implements Serializable {
-        private static final long serialVersionUID = 1L;
-
+    private final class CachedTime {
         public long timestampMillis;
         public String formatted;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverter.java
index 86c14f7..b437309 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverter.java
@@ -29,7 +29,6 @@ import org.apache.logging.log4j.core.layout.PatternLayout;
 @Plugin(name = "encode", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "enc", "encode" })
 public final class EncodingPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     private final List<PatternFormatter> formatters;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsIgnoreCaseReplacementConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsIgnoreCaseReplacementConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsIgnoreCaseReplacementConverter.java
index 4cb319c..1265108 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsIgnoreCaseReplacementConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsIgnoreCaseReplacementConverter.java
@@ -29,7 +29,6 @@ import org.apache.logging.log4j.core.layout.PatternLayout;
 @Plugin(name = "equalsIgnoreCase", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "equalsIgnoreCase" })
 public final class EqualsIgnoreCaseReplacementConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     /**
      * Gets an instance of the class.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverter.java
index 7b53a4f..2534b5d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverter.java
@@ -29,7 +29,6 @@ import org.apache.logging.log4j.core.layout.PatternLayout;
 @Plugin(name = "equals", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "equals" })
 public final class EqualsReplacementConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     /**
      * Gets an instance of the class.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java
index ba70796..6ed8c22 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java
@@ -33,7 +33,6 @@ import org.apache.logging.log4j.core.util.Constants;
 @Plugin(name = "ExtendedThrowablePatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "xEx", "xThrowable", "xException" })
 public final class ExtendedThrowablePatternConverter extends ThrowablePatternConverter {
-    private static final long serialVersionUID = 1L;
 
     /**
      * Private constructor.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FileDatePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FileDatePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FileDatePatternConverter.java
index 1f6a083..7a83d78 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FileDatePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FileDatePatternConverter.java
@@ -16,8 +16,6 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.io.Serializable;
-
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 
 /**
@@ -27,8 +25,7 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
  */
 @Plugin(name = "FileDatePatternConverter", category = "FileConverter")
 @ConverterKeys({ "d", "date" })
-public final class FileDatePatternConverter implements Serializable {
-    private static final long serialVersionUID = 1L;
+public final class FileDatePatternConverter {
     /**
      * Private constructor.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FileLocationPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FileLocationPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FileLocationPatternConverter.java
index 52d6e97..7fcd33d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FileLocationPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FileLocationPatternConverter.java
@@ -26,7 +26,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "FileLocationPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "F", "file" })
 public final class FileLocationPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Singleton.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FormattingInfo.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FormattingInfo.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FormattingInfo.java
index d8d7bcc..18369db 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FormattingInfo.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FormattingInfo.java
@@ -17,14 +17,10 @@
 
 package org.apache.logging.log4j.core.pattern;
 
-import java.io.Serializable;
-
 /**
  * Modifies the output of a pattern converter for a specified minimum and maximum width and alignment.
  */
-public final class FormattingInfo implements Serializable {
-    private static final long serialVersionUID = 1L;
-
+public final class FormattingInfo {
     /**
      * Array of spaces.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FullLocationPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FullLocationPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FullLocationPatternConverter.java
index ed436c2..120a671 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FullLocationPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FullLocationPatternConverter.java
@@ -26,7 +26,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "FullLocationPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "l", "location" })
 public final class FullLocationPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Singleton.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/HighlightConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/HighlightConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/HighlightConverter.java
index e36eb3a..0e2f63d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/HighlightConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/HighlightConverter.java
@@ -69,7 +69,6 @@ import org.apache.logging.log4j.util.Strings;
 @Plugin(name = "highlight", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "highlight" })
 public final class HighlightConverter extends LogEventPatternConverter implements AnsiConverter {
-    private static final long serialVersionUID = 1L;
 
     private static final Map<Level, String> DEFAULT_STYLES = new HashMap<>();
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/IntegerPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/IntegerPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/IntegerPatternConverter.java
index 0e27896..5380d45 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/IntegerPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/IntegerPatternConverter.java
@@ -27,7 +27,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "IntegerPatternConverter", category = "FileConverter")
 @ConverterKeys({ "i", "index" })
 public final class IntegerPatternConverter extends AbstractPatternConverter implements ArrayPatternConverter {
-    private static final long serialVersionUID = 1L;
     
     /**
      * Singleton.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
index 932e37a..c044afd 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java
@@ -31,7 +31,6 @@ import org.apache.logging.log4j.core.util.Patterns;
 @Plugin(name = "LevelPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "p", "level" })
 public final class LevelPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     private static final String OPTION_LENGTH = "length";
     private static final String OPTION_LOWER = "lowerCase";
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LineLocationPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LineLocationPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LineLocationPatternConverter.java
index 8b168dd..2b912d7 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LineLocationPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LineLocationPatternConverter.java
@@ -25,7 +25,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "LineLocationPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "L", "line" })
 public final class LineLocationPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Singleton.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LineSeparatorPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LineSeparatorPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LineSeparatorPatternConverter.java
index 6cd26e8..6d41bf9 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LineSeparatorPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LineSeparatorPatternConverter.java
@@ -26,7 +26,6 @@ import org.apache.logging.log4j.core.util.Constants;
 @Plugin(name = "LineSeparatorPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "n" })
 public final class LineSeparatorPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     /**
      * Singleton.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LiteralPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LiteralPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LiteralPatternConverter.java
index e8a5c80..0751bca 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LiteralPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LiteralPatternConverter.java
@@ -25,7 +25,6 @@ import org.apache.logging.log4j.core.util.OptionConverter;
  * Formats a string literal.
  */
 public final class LiteralPatternConverter extends LogEventPatternConverter implements ArrayPatternConverter {
-    private static final long serialVersionUID = 1L;
     
     /**
      * String literal.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LogEventPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LogEventPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LogEventPatternConverter.java
index 3494187..84cee32 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LogEventPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LogEventPatternConverter.java
@@ -23,7 +23,6 @@ import org.apache.logging.log4j.core.LogEvent;
  * that can format information from instances of LoggingEvent.
  */
 public abstract class LogEventPatternConverter extends AbstractPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     /**
      * Constructs an instance of LoggingEventPatternConverter.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java
index 16c4f8d..2b5651b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java
@@ -26,7 +26,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "LoggerPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "c", "logger" })
 public final class LoggerPatternConverter extends NamePatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Singleton.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MapPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MapPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MapPatternConverter.java
index 9cbb5cb..a91b8dd 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MapPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MapPatternConverter.java
@@ -33,7 +33,6 @@ import org.apache.logging.log4j.message.MapMessage;
 @Plugin(name = "MapPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "K", "map", "MAP" })
 public final class MapPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Name of property to output.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverter.java
index 6d091e6..af29f06 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverter.java
@@ -26,7 +26,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "MarkerPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "marker" })
 public final class MarkerPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     /**
      * Private constructor.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverter.java
index 3ed6144..525641c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverter.java
@@ -26,7 +26,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "MarkerNamePatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "markerSimpleName" })
 public final class MarkerSimpleNamePatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     /**
      * Private constructor.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
index 2a13789..1663923 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
@@ -33,7 +33,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "MdcPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "X", "mdc", "MDC" })
 public final class MdcPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Name of property to output.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
index 8650de0..fd389f4 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
@@ -21,6 +21,7 @@ import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.MultiformatMessage;
+import org.apache.logging.log4j.message.ReusableMessage;
 import org.apache.logging.log4j.util.StringBuilderFormattable;
 
 /**
@@ -29,7 +30,6 @@ import org.apache.logging.log4j.util.StringBuilderFormattable;
 @Plugin(name = "MessagePatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "m", "msg", "message" })
 public final class MessagePatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     private final String[] formats;
     private final Configuration config;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MethodLocationPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MethodLocationPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MethodLocationPatternConverter.java
index 339193a..457b7a6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MethodLocationPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MethodLocationPatternConverter.java
@@ -26,7 +26,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "MethodLocationPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "M", "method" })
 public final class MethodLocationPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Singleton.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
index 8411e74..e145f81 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -24,8 +23,7 @@ import java.util.List;
 /**
  * NameAbbreviator generates abbreviated logger and class names.
  */
-public abstract class NameAbbreviator implements Serializable {
-    private static final long serialVersionUID = 1L;
+public abstract class NameAbbreviator {
     /**
      * Default (no abbreviation) abbreviator.
      */
@@ -138,7 +136,6 @@ public abstract class NameAbbreviator implements Serializable {
      * Abbreviator that simply appends full name to buffer.
      */
     private static class NOPAbbreviator extends NameAbbreviator {
-        private static final long serialVersionUID = 1L;
         /**
          * Constructor.
          */
@@ -158,7 +155,6 @@ public abstract class NameAbbreviator implements Serializable {
      * Abbreviator that drops starting path elements.
      */
     private static class MaxElementAbbreviator extends NameAbbreviator {
-        private static final long serialVersionUID = 1L;
         /**
          * Maximum number of path elements to output.
          */
@@ -201,8 +197,7 @@ public abstract class NameAbbreviator implements Serializable {
     /**
      * Fragment of an pattern abbreviator.
      */
-    private static class PatternAbbreviatorFragment implements Serializable {
-        private static final long serialVersionUID = 1L;
+    private static class PatternAbbreviatorFragment {
         /**
          * Count of initial characters of element to output.
          */
@@ -259,7 +254,6 @@ public abstract class NameAbbreviator implements Serializable {
      * Pattern abbreviator.
      */
     private static class PatternAbbreviator extends NameAbbreviator {
-        private static final long serialVersionUID = 1L;
         /**
          * Element abbreviation patterns.
          */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamePatternConverter.java
index 3f31094..b35c787 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamePatternConverter.java
@@ -21,7 +21,6 @@ package org.apache.logging.log4j.core.pattern;
  * Abstract base class for other pattern converters which can return only parts of their name.
  */
 public abstract class NamePatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Abbreviator.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NanoTimePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NanoTimePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NanoTimePatternConverter.java
index 146649c..3d11447 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NanoTimePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NanoTimePatternConverter.java
@@ -25,7 +25,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "NanoTimePatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "N", "nano" })
 public final class NanoTimePatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     /**
      * Private constructor.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NdcPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NdcPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NdcPatternConverter.java
index 4e1da54..916f107 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NdcPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NdcPatternConverter.java
@@ -26,7 +26,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "NdcPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({"x", "NDC"})
 public final class NdcPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Singleton.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternFormatter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternFormatter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternFormatter.java
index fe90d0f..4bde1e2 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternFormatter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternFormatter.java
@@ -16,17 +16,13 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import java.io.Serializable;
-
 import org.apache.logging.log4j.core.LogEvent;
 
 
 /**
  *
  */
-public class PatternFormatter implements Serializable {
-    private static final long serialVersionUID = 1L;
-
+public class PatternFormatter {
     private final LogEventPatternConverter converter;
     private final FormattingInfo field;
     private final boolean skipFormattingInfo;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java
index 8a5e7b6..f7c4697 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java
@@ -30,7 +30,6 @@ import org.apache.logging.log4j.core.layout.PatternLayout;
 @Plugin(name = "replace", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "replace" })
 public final class RegexReplacementConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     private final Pattern pattern;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java
index bd1eec5..9767be1 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java
@@ -27,7 +27,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "RelativeTimePatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "r", "relative" })
 public class RelativeTimePatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Cached formatted timestamp.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.java
index 699df53..e3e7d33 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.java
@@ -33,7 +33,6 @@ import org.apache.logging.log4j.core.util.Constants;
 @Plugin(name = "RootThrowablePatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "rEx", "rThrowable", "rException" })
 public final class RootThrowablePatternConverter extends ThrowablePatternConverter {
-    private static final long serialVersionUID = 1L;
 
     /**
      * Private constructor.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverter.java
index 8f162e4..9e14c78 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverter.java
@@ -28,7 +28,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "SequenceNumberPatternConverter", category = "Converter")
 @ConverterKeys({ "sn", "sequenceNumber" })
 public final class SequenceNumberPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     private static final AtomicLong SEQUENCE = new AtomicLong();
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/StyleConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/StyleConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/StyleConverter.java
index 4cadbc6..202d771 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/StyleConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/StyleConverter.java
@@ -31,7 +31,6 @@ import org.apache.logging.log4j.core.util.Patterns;
 @Plugin(name = "style", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "style" })
 public final class StyleConverter extends LogEventPatternConverter implements AnsiConverter {
-    private static final long serialVersionUID = 1L;
 
     private final List<PatternFormatter> patternFormatters;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
index 6d771c2..c763e51 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
@@ -25,7 +25,6 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 @Plugin(name = "ThreadPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "t", "thread" })
 public final class ThreadPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
     /**
      * Singleton.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
index cad5739..a651ae6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
@@ -34,7 +34,6 @@ import org.apache.logging.log4j.util.Strings;
 @Plugin(name = "ThrowablePatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "ex", "throwable", "exception" })
 public class ThrowablePatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     private String rawOption;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/UuidPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/UuidPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/UuidPatternConverter.java
index 4483765..439935b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/UuidPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/UuidPatternConverter.java
@@ -28,7 +28,6 @@ import org.apache.logging.log4j.core.util.UuidUtil;
 @Plugin(name = "UuidPatternConverter", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "u", "uuid" })
 public final class UuidPatternConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     private final boolean isRandom;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/VariablesNotEmptyReplacementConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/VariablesNotEmptyReplacementConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/VariablesNotEmptyReplacementConverter.java
index a64bdb4..9a58f79 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/VariablesNotEmptyReplacementConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/VariablesNotEmptyReplacementConverter.java
@@ -29,7 +29,6 @@ import org.apache.logging.log4j.core.layout.PatternLayout;
 @Plugin(name = "notEmpty", category = PatternConverter.CATEGORY)
 @ConverterKeys({ "notEmpty", "varsNotEmpty", "variablesNotEmpty", })
 public final class VariablesNotEmptyReplacementConverter extends LogEventPatternConverter {
-    private static final long serialVersionUID = 1L;
 
     private final List<PatternFormatter> formatters;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/67069c10/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
index ddf34bd..631d334 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
@@ -17,7 +17,6 @@
 
 package org.apache.logging.log4j.core.util.datetime;
 
-import java.io.Serializable;
 import java.util.Calendar;
 import java.util.Objects;
 
@@ -28,9 +27,7 @@ import java.util.Objects;
  * Related benchmarks: /log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java and
  * /log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadsafeDateFormatBenchmark.java
  */
-public class FixedDateFormat implements Serializable {
-    private static final long serialVersionUID = 1L;
-
+public class FixedDateFormat {
     /**
      * Enumeration over the supported date/time format patterns.
      * <p>


[09/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id in PatternLayout. Add %threadName alias.

Posted by rp...@apache.org.
[LOG4J2-1299] Add pattern converter for thread id in PatternLayout. Add
%threadName alias.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 7da2fa1ff386a011a0c29eba44b3ff566666a8ef
Parents: aa82192
Author: ggregory <gg...@apache.org>
Authored: Mon Feb 29 23:03:44 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Mon Feb 29 23:03:44 2016 -0800

----------------------------------------------------------------------
 .../logging/log4j/core/pattern/ThreadPatternConverter.java      | 2 +-
 .../apache/logging/log4j/core/pattern/PatternParserTest.java    | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7da2fa1f/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
index c763e51..8817bbc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java
@@ -23,7 +23,7 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
  * Formats the event thread name.
  */
 @Plugin(name = "ThreadPatternConverter", category = PatternConverter.CATEGORY)
-@ConverterKeys({ "t", "thread" })
+@ConverterKeys({ "t", "thread", "threadName" })
 public final class ThreadPatternConverter extends LogEventPatternConverter {
     /**
      * Singleton.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7da2fa1f/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
index e7f51b4..b01f2bc 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
@@ -248,6 +248,11 @@ public class PatternParserTest {
         testThreadNamePattern("%thread");
     }
 
+    @Test
+    public void testThreadNameFullPattern() {
+        testThreadNamePattern("%threadName");
+    }
+
     private void testThreadNamePattern(final String pattern) {
         final List<PatternFormatter> formatters = parser.parse(pattern);
         assertNotNull(formatters);


[30/50] [abbrv] logging-log4j2 git commit: Use final.

Posted by rp...@apache.org.
Use final.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: e4eded22cd3744a28bd5bcd9de41a035d13695f1
Parents: fc91847
Author: ggregory <gg...@apache.org>
Authored: Wed Mar 2 01:21:55 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Wed Mar 2 01:21:55 2016 -0800

----------------------------------------------------------------------
 .../log4j/message/ReusableParameterizedMessage.java     |  2 +-
 .../core/appender/rolling/DefaultRolloverStrategy.java  |  4 ++--
 .../logging/log4j/core/async/AsyncLoggerConfig.java     |  2 +-
 .../log4j/core/config/AbstractConfiguration.java        |  2 +-
 .../log4j/core/config/ConfiguratonFileWatcher.java      |  4 ++--
 .../log4j/core/pattern/DatePatternConverter.java        |  4 ++--
 .../apache/logging/log4j/core/util/WatchManager.java    |  2 +-
 .../log4j/core/async/perftest/PerfTestDriver.java       |  2 +-
 .../logging/log4j/core/util/WatchManagerTest.java       |  6 +++---
 .../logging/log4j/perf/jmh/CollectionsBenchmark.java    | 12 ++++++------
 .../logging/log4j/perf/jmh/LoggerConfigBenchmark.java   |  8 ++++----
 .../log4j/perf/jmh/ThreadLocalVsPoolBenchmark.java      |  2 +-
 .../apache/logging/log4j/perf/nogc/AbstractLogger.java  |  2 +-
 .../apache/logging/log4j/perf/nogc/DemoAppender.java    |  2 +-
 .../org/apache/logging/log4j/perf/nogc/NoGcLayout.java  |  6 +++---
 .../org/apache/logging/log4j/perf/nogc/NoGcLogger.java  |  2 +-
 .../org/apache/logging/log4j/perf/nogc/NoGcMessage.java |  6 +++---
 .../log4j/configuration/CustomConfigurationTest.java    |  2 +-
 18 files changed, 35 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
index a75c2d0..b4a1e5c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
@@ -28,7 +28,7 @@ public class ReusableParameterizedMessage implements ReusableMessage {
     private static final long serialVersionUID = 7800075879295123856L;
 
     static class InternalState {
-        private StringBuilder buffer = new StringBuilder(2048);
+        private final StringBuilder buffer = new StringBuilder(2048);
         private String messagePattern;
         private int argCount;
         private transient Object[] varargs;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
index b030d17..e014bd7 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
@@ -192,9 +192,9 @@ public class DefaultRolloverStrategy implements RolloverStrategy {
     private final StrSubstitutor subst;
     private final int compressionLevel;
 
-    private List<Action> customActions;
+    private final List<Action> customActions;
 
-    private boolean stopCustomActionsOnError;
+    private final boolean stopCustomActionsOnError;
 
     /**
      * Constructs a new instance.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
index 430d6c9..24d0086 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
@@ -68,7 +68,7 @@ import org.apache.logging.log4j.util.Strings;
 @Plugin(name = "asyncLogger", category = Node.CATEGORY, printObject = true)
 public class AsyncLoggerConfig extends LoggerConfig {
 
-    private AsyncLoggerConfigDelegate delegate;
+    private final AsyncLoggerConfigDelegate delegate;
 
     protected AsyncLoggerConfig(final String name,
             final List<AppenderRef> appenders, final Filter filter,

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
index 30a3652..e67e6ee 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
@@ -114,7 +114,7 @@ public abstract class AbstractConfiguration extends AbstractFilterable implement
     private final ConcurrentMap<String, Object> componentMap = new ConcurrentHashMap<>();
     private final ConfigurationSource configurationSource;
     private ScriptManager scriptManager;
-    private ConfigurationScheduler configurationScheduler = new ConfigurationScheduler();
+    private final ConfigurationScheduler configurationScheduler = new ConfigurationScheduler();
     private final WatchManager watchManager = new WatchManager(configurationScheduler);
     private AsyncLoggerConfigDisruptor asyncLoggerConfigDisruptor;
     private NanoClock nanoClock = new DummyNanoClock();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfiguratonFileWatcher.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfiguratonFileWatcher.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfiguratonFileWatcher.java
index 1190b90..e268c54 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfiguratonFileWatcher.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfiguratonFileWatcher.java
@@ -27,8 +27,8 @@ import java.util.List;
  */
 public class ConfiguratonFileWatcher implements FileWatcher {
 
-    private Reconfigurable reconfigurable;
-    private List<ConfigurationListener> listeners;
+    private final Reconfigurable reconfigurable;
+    private final List<ConfigurationListener> listeners;
 
     public ConfiguratonFileWatcher(Reconfigurable reconfigurable, final List<ConfigurationListener> listeners) {
         this.reconfigurable = reconfigurable;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
index 9fdfcd8..b837338 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
@@ -82,7 +82,7 @@ public final class DatePatternConverter extends LogEventPatternConverter impleme
         private final FixedDateFormat fixedDateFormat;
 
         // below fields are only used in ThreadLocal caching mode
-        private char[] cachedBuffer = new char[64]; // max length of formatted date-time in any format < 64
+        private final char[] cachedBuffer = new char[64]; // max length of formatted date-time in any format < 64
         private int length = 0;
 
         FixedFormatter(final FixedDateFormat fixedDateFormat) {
@@ -155,7 +155,7 @@ public final class DatePatternConverter extends LogEventPatternConverter impleme
     private static final String UNIX_MILLIS_FORMAT = "UNIX_MILLIS";
 
     private final String[] options;
-    private ThreadLocal<Formatter> threadLocalFormatter = new ThreadLocal<>();
+    private final ThreadLocal<Formatter> threadLocalFormatter = new ThreadLocal<>();
     private final AtomicReference<CachedTime> cachedTime;
     private final Formatter formatter;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
index db9fcfd..6da8d0f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
@@ -37,7 +37,7 @@ public class WatchManager extends AbstractLifeCycle {
     private final ConcurrentMap<File, FileMonitor> watchers = new ConcurrentHashMap<>();
     private int intervalSeconds = 0;
     private ScheduledFuture<?> future;
-    private ConfigurationScheduler scheduler;
+    private final ConfigurationScheduler scheduler;
 
     public WatchManager(ConfigurationScheduler scheduler) {
         this.scheduler = scheduler;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestDriver.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestDriver.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestDriver.java
index d416dbf..de74115 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestDriver.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestDriver.java
@@ -197,7 +197,7 @@ public class PerfTestDriver {
         Log4j2(RunLog4j2.class), //
         Logback(RunLogback.class);
 
-        private Class<? extends IPerfTestRunner> implementationClass;
+        private final Class<? extends IPerfTestRunner> implementationClass;
 
         private Runner(Class<? extends IPerfTestRunner> cls) {
             this.implementationClass = cls;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-core/src/test/java/org/apache/logging/log4j/core/util/WatchManagerTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/WatchManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/WatchManagerTest.java
index 4108f26..4953ac8 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/WatchManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/WatchManagerTest.java
@@ -39,9 +39,9 @@ import org.junit.Test;
  */
 public class WatchManagerTest {
 
-    private String testFile = "target/testWatchFile";
-    private String originalFile = "target/test-classes/log4j-test1.xml";
-    private String newFile = "target/test-classes/log4j-test1.yaml";
+    private final String testFile = "target/testWatchFile";
+    private final String originalFile = "target/test-classes/log4j-test1.xml";
+    private final String newFile = "target/test-classes/log4j-test1.yaml";
 
     private static final boolean IS_WINDOWS = PropertiesUtil.getProperties().isOsWindows();
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/CollectionsBenchmark.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/CollectionsBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/CollectionsBenchmark.java
index e6ef08c..37fa593 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/CollectionsBenchmark.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/CollectionsBenchmark.java
@@ -39,12 +39,12 @@ import org.openjdk.jmh.infra.Blackhole;
 //
 @State(Scope.Benchmark)
 public class CollectionsBenchmark {
-    private ConcurrentHashMap<String, Long> map1 = new ConcurrentHashMap<String, Long>();
-    private CopyOnWriteArraySet<Long> arraySet1 = new CopyOnWriteArraySet<Long>();
-    private CopyOnWriteArrayList<Long> arrayList1 = new CopyOnWriteArrayList<Long>();
-    private ConcurrentHashMap<String, Long> map3 = new ConcurrentHashMap<String, Long>();
-    private CopyOnWriteArraySet<Long> arraySet3 = new CopyOnWriteArraySet<Long>();
-    private CopyOnWriteArrayList<Long> arrayList3 = new CopyOnWriteArrayList<Long>();
+    private final ConcurrentHashMap<String, Long> map1 = new ConcurrentHashMap<String, Long>();
+    private final CopyOnWriteArraySet<Long> arraySet1 = new CopyOnWriteArraySet<Long>();
+    private final CopyOnWriteArrayList<Long> arrayList1 = new CopyOnWriteArrayList<Long>();
+    private final ConcurrentHashMap<String, Long> map3 = new ConcurrentHashMap<String, Long>();
+    private final CopyOnWriteArraySet<Long> arraySet3 = new CopyOnWriteArraySet<Long>();
+    private final CopyOnWriteArrayList<Long> arrayList3 = new CopyOnWriteArrayList<Long>();
 
     @Setup
     public void setup() {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LoggerConfigBenchmark.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LoggerConfigBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LoggerConfigBenchmark.java
index 937b5bb..161d4d1 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LoggerConfigBenchmark.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/LoggerConfigBenchmark.java
@@ -51,17 +51,17 @@ import org.openjdk.jmh.infra.Blackhole;
 @State(Scope.Benchmark)
 public class LoggerConfigBenchmark {
 
-    private CopyOnWriteArraySet<AppenderControl> appenderSet = new CopyOnWriteArraySet<AppenderControl>();
+    private final CopyOnWriteArraySet<AppenderControl> appenderSet = new CopyOnWriteArraySet<AppenderControl>();
     private volatile Filter filter = null;
-    private boolean additive = true;
-    private boolean includeLocation = true;
+    private final boolean additive = true;
+    private final boolean includeLocation = true;
     private LoggerConfig parent;
     private final AtomicInteger counter = new AtomicInteger();
     private final AtomicBoolean shutdown = new AtomicBoolean(false);
     private final Lock shutdownLock = new ReentrantLock();
     private final Condition noLogEvents = shutdownLock.newCondition(); // should only be used when shutdown == true
     private final LogEvent LOGEVENT = createLogEventWithoutException();
-    private SimpleListAppender listAppender = new SimpleListAppender();
+    private final SimpleListAppender listAppender = new SimpleListAppender();
 
     private static class SimpleListAppender extends AbstractAppender {
         private static final long serialVersionUID = 1L;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadLocalVsPoolBenchmark.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadLocalVsPoolBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadLocalVsPoolBenchmark.java
index a05f121..113e56a 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadLocalVsPoolBenchmark.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadLocalVsPoolBenchmark.java
@@ -72,7 +72,7 @@ public class ThreadLocalVsPoolBenchmark {
      */
     private final static PatternFormatter[] formatters = createFormatters();
 
-    private StringBuilderPool pool = new StringBuilderPool(DEFAULT_STRING_BUILDER_SIZE);
+    private final StringBuilderPool pool = new StringBuilderPool(DEFAULT_STRING_BUILDER_SIZE);
     private static ThreadLocal<StringBuilder> threadLocal = new ThreadLocal<>();
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/AbstractLogger.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/AbstractLogger.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/AbstractLogger.java
index 471e30c..08e757e 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/AbstractLogger.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/AbstractLogger.java
@@ -24,7 +24,7 @@ import org.apache.logging.log4j.message.Message;
  * Logic common among ClassicLogger and NoGcLogger.
  */
 public abstract class AbstractLogger {
-    private MutableLogEvent reusedLogEvent = new MutableLogEvent();
+    private final MutableLogEvent reusedLogEvent = new MutableLogEvent();
     protected DemoAppender appender = new DemoAppender(createLayout());
 
     protected abstract Layout<?> createLayout();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/DemoAppender.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/DemoAppender.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/DemoAppender.java
index fd05ac3..2f3851d 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/DemoAppender.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/DemoAppender.java
@@ -27,7 +27,7 @@ import org.apache.logging.log4j.core.layout.ByteBufferDestination;
  * Demo Appender that does not do any I/O.
  */
 public class DemoAppender extends AbstractAppender implements ByteBufferDestination {
-    private ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[4096]);
+    private final ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[4096]);
 
     public long checksum;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcLayout.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcLayout.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcLayout.java
index f47a60e..345a231 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcLayout.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcLayout.java
@@ -37,9 +37,9 @@ import java.util.Map;
  * </p>
  */
 public class NoGcLayout implements Layout<Serializable>, Encoder<LogEvent> {
-    private StringBuilder cachedStringBuilder = new StringBuilder(2048);
-    private PatternSerializer2 serializer = new PatternSerializer2();
-    private TextEncoderHelper cachedHelper;
+    private final StringBuilder cachedStringBuilder = new StringBuilder(2048);
+    private final PatternSerializer2 serializer = new PatternSerializer2();
+    private final TextEncoderHelper cachedHelper;
 
     public NoGcLayout(Charset charset) {
         cachedHelper = new TextEncoderHelper(charset);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcLogger.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcLogger.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcLogger.java
index f4d5faf..687b718 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcLogger.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcLogger.java
@@ -24,7 +24,7 @@ import java.nio.charset.StandardCharsets;
  * Logger with unrolled varargs, cached Message and NoGcLayout.
  */
 public class NoGcLogger extends AbstractLogger {
-    private NoGcMessage reusedMessage = new NoGcMessage();
+    private final NoGcMessage reusedMessage = new NoGcMessage();
 
     @Override
     protected Layout<?> createLayout() {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessage.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessage.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessage.java
index 004111e..fdb84d9 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessage.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessage.java
@@ -25,16 +25,16 @@ import java.util.Arrays;
  */
 public class NoGcMessage implements Message {
     class InternalState {
-        private Object[] params = new Object[10];
+        private final Object[] params = new Object[10];
         private int paramCount;
-        private StringBuilder buffer = new StringBuilder(2048);
+        private final StringBuilder buffer = new StringBuilder(2048);
 
         public Object[] getParamsCopy() {
             return Arrays.copyOf(params, paramCount);
         }
     }
 
-    private ThreadLocal<InternalState> state = new ThreadLocal<>();
+    private final ThreadLocal<InternalState> state = new ThreadLocal<>();
 
     public NoGcMessage() {
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e4eded22/log4j-samples/configuration/src/test/java/org/apache/logging/log4j/configuration/CustomConfigurationTest.java
----------------------------------------------------------------------
diff --git a/log4j-samples/configuration/src/test/java/org/apache/logging/log4j/configuration/CustomConfigurationTest.java b/log4j-samples/configuration/src/test/java/org/apache/logging/log4j/configuration/CustomConfigurationTest.java
index 22e37ef..054a0f3 100644
--- a/log4j-samples/configuration/src/test/java/org/apache/logging/log4j/configuration/CustomConfigurationTest.java
+++ b/log4j-samples/configuration/src/test/java/org/apache/logging/log4j/configuration/CustomConfigurationTest.java
@@ -24,7 +24,7 @@ import org.junit.Test;
  *
  */
 public class CustomConfigurationTest {
-    private Logger logger = LogManager.getLogger(CustomConfiguration.class);
+    private final Logger logger = LogManager.getLogger(CustomConfiguration.class);
 
     @Test
     public void testLogging() {


[32/50] [abbrv] logging-log4j2 git commit: Revert commit that broke the build. Not sure why it was thought the import was not used since the class extends it

Posted by rp...@apache.org.
Revert commit that broke the build. Not sure why it was thought the import was not used since the class extends it


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 37ef86b097bb62473592ff641f386a4cff364bf2
Parents: e689143
Author: Ralph Goers <rg...@nextiva.com>
Authored: Wed Mar 2 08:42:43 2016 -0700
Committer: Ralph Goers <rg...@nextiva.com>
Committed: Wed Mar 2 08:42:43 2016 -0700

----------------------------------------------------------------------
 .../org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java  | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/37ef86b0/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java
----------------------------------------------------------------------
diff --git a/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java b/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java
index f7405c2..538dc8d 100644
--- a/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java
+++ b/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java
@@ -22,6 +22,8 @@ import java.util.Map;
 import javax.swing.JPanel;
 import javax.swing.SwingWorker;
 
+import com.sun.tools.jconsole.JConsolePlugin;
+
 /**
  * Adapts the {@code ClientGui} to the {@code JConsolePlugin} API.
  */


[41/50] [abbrv] logging-log4j2 git commit: Add test for LOG4J2-1252.

Posted by rp...@apache.org.
Add test for LOG4J2-1252.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 75fb3b9c7c45b8aa53dd408152e2761debc68457
Parents: a6af67c
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 21:34:55 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 21:34:55 2016 -0600

----------------------------------------------------------------------
 .../log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java     | 6 +++++-
 log4j-core/src/test/resources/JeroMqAppenderTest.xml           | 3 ++-
 2 files changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/75fb3b9c/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java
index ee9c700..385d63d 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java
@@ -22,6 +22,7 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 
+import org.apache.logging.log4j.ThreadContext;
 import org.apache.logging.log4j.core.Logger;
 import org.apache.logging.log4j.junit.LoggerContextRule;
 import org.junit.AfterClass;
@@ -49,7 +50,7 @@ public class JeroMqAppenderTest {
     @Test(timeout = 10000)
     public void testClientServer() throws Exception {
         final JeroMqAppender appender = ctx.getRequiredAppender("JeroMQAppender", JeroMqAppender.class);
-        final int expectedReceiveCount = 2;
+        final int expectedReceiveCount = 3;
         final JeroMqTestClient client = new JeroMqTestClient(JeroMqAppender.getContext(), "tcp://localhost:5556", expectedReceiveCount);
         final ExecutorService executor = Executors.newSingleThreadExecutor();
         try {
@@ -59,11 +60,14 @@ public class JeroMqAppenderTest {
             appender.resetSendRcs();
             logger.info("Hello");
             logger.info("Again");
+            ThreadContext.put("foo", "bar");
+            logger.info("World");
             final List<String> list = future.get();
             Assert.assertEquals(expectedReceiveCount, appender.getSendRcTrue());
             Assert.assertEquals(0, appender.getSendRcFalse());
             Assert.assertEquals("Hello", list.get(0));
             Assert.assertEquals("Again", list.get(1));
+            Assert.assertEquals("barWorld", list.get(2));
         } finally {
             executor.shutdown();
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/75fb3b9c/log4j-core/src/test/resources/JeroMqAppenderTest.xml
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/resources/JeroMqAppenderTest.xml b/log4j-core/src/test/resources/JeroMqAppenderTest.xml
index a72a4f7..2a9d84d 100644
--- a/log4j-core/src/test/resources/JeroMqAppenderTest.xml
+++ b/log4j-core/src/test/resources/JeroMqAppenderTest.xml
@@ -20,6 +20,7 @@
     <JeroMQ name="JeroMQAppender">    
       <Property name="endpoint">tcp://*:5556</Property>
       <Property name="endpoint">ipc://info-topic</Property>
+      <PatternLayout pattern="%X{foo}%m"/>
     </JeroMQ>
   </Appenders>
   <Loggers>
@@ -27,4 +28,4 @@
       <AppenderRef ref="JeroMQAppender"/>
     </Root>
   </Loggers>
-</Configuration>
\ No newline at end of file
+</Configuration>


[16/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id and priority in PatternLayout.

Posted by rp...@apache.org.
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
----------------------------------------------------------------------
diff --git a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
index 611f23f..769fa74 100644
--- a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
+++ b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
@@ -248,6 +248,24 @@ public class FlumeEvent extends SimpleEvent implements LogEvent {
     }
 
     /**
+     * Returns the ID of the Thread.
+     * @return the ID of the Thread.
+     */
+    @Override
+    public long getThreadId() {
+        return event.getThreadId();
+    }
+
+    /**
+     * Returns the priority of the Thread.
+     * @return the priority of the Thread.
+     */
+    @Override
+    public int getThreadPriority() {
+        return event.getThreadPriority();
+    }
+
+    /**
      * Returns the name of the Thread.
      * @return the name of the Thread.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManager.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManager.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManager.java
index d879b07..448cd04 100644
--- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManager.java
+++ b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManager.java
@@ -90,7 +90,9 @@ public final class NoSqlDatabaseManager<W> extends AbstractDatabaseManager {
             entity.set("marker", buildMarkerEntity(marker));
         }
 
+        entity.set("threadId", event.getThreadId());
         entity.set("threadName", event.getThreadName());
+        entity.set("threadPriority", event.getThreadPriority());
         entity.set("millis", event.getTimeMillis());
         entity.set("date", new java.util.Date(event.getTimeMillis()));
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java
----------------------------------------------------------------------
diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java
index d90a804..7809451 100644
--- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java
+++ b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java
@@ -185,7 +185,9 @@ public class NoSqlDatabaseManagerTest {
             expect(message.getFormattedMessage()).andReturn("My formatted message 01.");
             expect(event.getSource()).andReturn(new StackTraceElement("com.foo.Bar", "testMethod01", "Bar.java", 15));
             expect(event.getMarker()).andReturn(null);
+            expect(event.getThreadId()).andReturn(1L);
             expect(event.getThreadName()).andReturn("MyThread-A");
+            expect(event.getThreadPriority()).andReturn(1);
             expect(event.getTimeMillis()).andReturn(1234567890123L).times(2);
             expect(event.getThrown()).andReturn(null);
             expect(event.getContextMap()).andReturn(null);
@@ -293,7 +295,9 @@ public class NoSqlDatabaseManagerTest {
             expect(message.getFormattedMessage()).andReturn("Another cool message 02.");
             expect(event.getSource()).andReturn(new StackTraceElement("com.bar.Foo", "anotherMethod03", "Foo.java", 9));
             expect(event.getMarker()).andReturn(MarkerManager.getMarker("LoneMarker"));
+            expect(event.getThreadId()).andReturn(1L);
             expect(event.getThreadName()).andReturn("AnotherThread-B");
+            expect(event.getThreadPriority()).andReturn(1);
             expect(event.getTimeMillis()).andReturn(987654321564L).times(2);
             expect(event.getThrown()).andReturn(exception);
             expect(event.getContextMap()).andReturn(context);
@@ -443,7 +447,9 @@ public class NoSqlDatabaseManagerTest {
             expect(event.getMarker()).andReturn(
                     MarkerManager.getMarker("AnotherMarker").addParents(MarkerManager.getMarker("Parent1").addParents(MarkerManager.getMarker("GrandParent1")),
                             MarkerManager.getMarker("Parent2")));
+            expect(event.getThreadId()).andReturn(1L);
             expect(event.getThreadName()).andReturn("AnotherThread-B");
+            expect(event.getThreadPriority()).andReturn(1);
             expect(event.getTimeMillis()).andReturn(987654321564L).times(2);
             expect(event.getThrown()).andReturn(exception2);
             expect(event.getContextMap()).andReturn(context);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d1e92fe..42c4c1b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,6 +24,9 @@
   </properties>
   <body>
     <release version="2.6" date="2016-MM-DD" description="GA Release 2.6">
+      <action issue="LOG4J2-1299" dev="ggregory" type="add">
+        Add pattern converter for thread id and priority in PatternLayout.
+      </action>
       <action issue="LOG4J2-1271" dev="rpopma" type="add">
         Add MessageFactory that avoid allocation by reusing a cached ParameterizedMessage instance.
       </action>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/585beba1/src/site/xdoc/manual/layouts.xml.vm
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/layouts.xml.vm b/src/site/xdoc/manual/layouts.xml.vm
index 03b4b05..fa602e4 100644
--- a/src/site/xdoc/manual/layouts.xml.vm
+++ b/src/site/xdoc/manual/layouts.xml.vm
@@ -166,7 +166,9 @@ logger.debug("one={}, two={}, three={}", 1, 2, 3);
             <li>Time Nanos</li>
             <li>Time Millis</li>
             <li>Level</li>
+            <li>Thread ID</li>
             <li>Thread Name</li>
+            <li>Thread Priority</li>
             <li>Formatted Message</li>
             <li>Logger FQCN</li>
             <li>Logger Name</li>
@@ -273,14 +275,18 @@ logger.debug("one={}, two={}, three={}", 1, 2, 3);
     "logger":"com.foo.Bar",
     "timestamp":"1376681196470",
     "level":"INFO",
+    "threadId":1,
     "thread":"main",
+    "threadPriority":1,
     "message":"Message flushed with immediate flush=true"
   },
   {
     "logger":"com.foo.Bar",
     "timestamp":"1376681196471",
     "level":"ERROR",
+    "threadId":1,
     "thread":"main",
+    "threadPriority":1,
     "message":"Message flushed with immediate flush=true",
     "throwable":"java.lang.IllegalArgumentException: badarg\\n\\tat org.apache.logging.log4j.core.appender.JSONCompleteFileAppenderTest.testFlushAtEndOfBatch(JSONCompleteFileAppenderTest.java:54)\\n\\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\\n\\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\\n\\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\\n\\tat java.lang.reflect.Method.invoke(Method.java:606)\\n\\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)\\n\\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\\n\\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)\\n\\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\\n\\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)\\n\\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(Bl
 ockJUnit4ClassRunner.java:70)\\n\\tat org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)\\n\\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)\\n\\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)\\n\\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)\\n\\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)\\n\\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)\\n\\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)\\n\\tat org.junit.runners.ParentRunner.run(ParentRunner.java:309)\\n\\tat org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)\\n\\tat org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)\\n\\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)\\n\\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTe
 stRunner.java:683)\\n\\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)\\n\\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)\\n"
   }
@@ -1233,13 +1239,29 @@ WARN  [main]: Message 2</pre>
             </tr>
             <tr>
               <td align="center">
+                <b>T</b><br />
+                <b>tid</b><br />
+                <b>threadId</b>
+              </td>
+              <td>Outputs the ID of the thread that generated the logging event.</td>
+            </tr>
+            <tr>
+              <td align="center">
                 <b>t</b><br />
-                <b>thread</b>
+                <b>thread</b><br />
+                <b>threadName</b>
               </td>
               <td>Outputs the name of the thread that generated the logging event.</td>
             </tr>
             <tr>
               <td align="center">
+                <b>tp</b><br />
+                <b>threadPriority</b>
+              </td>
+              <td>Outputs the priority of the thread that generated the logging event.</td>
+            </tr>
+            <tr>
+              <td align="center">
                 <b>x</b><br />
                 <b>NDC</b>
               </td>
@@ -1714,11 +1736,11 @@ at org.apache.logging.log4j.core.pattern.ExtendedThrowableTest.testException(Ext
           </p>
           <pre class="prettyprint linenums">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
 &lt;Events xmlns=&quot;http://logging.apache.org/log4j/2.0/events&quot;&gt;
-  &lt;Event logger=&quot;com.foo.Bar&quot; timestamp=&quot;1373436580419&quot; level=&quot;INFO&quot; thread=&quot;main&quot;&gt;
+  &lt;Event logger=&quot;com.foo.Bar&quot; timestamp=&quot;1373436580419&quot; level=&quot;INFO&quot; threadId=&quot;1&quot; thread=&quot;main&quot; threadPriority=&quot;1&quot;&gt;
     &lt;Message&gt;&lt;![CDATA[This is a log message 1]]&gt;&lt;/Message&gt;
     &lt;Marker parent=&quot;Parent Marker&quot;&gt;&lt;Child Marker&gt;&lt;/Marker&gt;
   &lt;/Event&gt;
-  &lt;Event logger=&quot;com.foo.Baz&quot; timestamp=&quot;1373436580420&quot; level=&quot;INFO&quot; thread=&quot;main&quot;&gt;
+  &lt;Event logger=&quot;com.foo.Baz&quot; timestamp=&quot;1373436580420&quot; level=&quot;INFO&quot; threadId=&quot;1&quot; thread=&quot;main&quot; threadPriority=&quot;1&quot;&gt;
     &lt;Message&gt;&lt;![CDATA[This is a log message 2]]&gt;&lt;/Message&gt;
     &lt;Marker&gt;&lt;The Marker Name&gt;&lt;/Marker&gt;
   &lt;/Event&gt;


[21/50] [abbrv] logging-log4j2 git commit: Add SimplePerfTest shell script.

Posted by rp...@apache.org.
Add SimplePerfTest shell script.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: af02a02be5caf746c22ba93ea1277ef658907678
Parents: b2ec305
Author: Matt Sicker <bo...@gmail.com>
Authored: Tue Mar 1 16:14:25 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Tue Mar 1 16:14:25 2016 -0600

----------------------------------------------------------------------
 .../log4j/core/async/perftest/SimplePerfTest.sh | 22 ++++++++++++++++++++
 1 file changed, 22 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/af02a02b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/SimplePerfTest.sh
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/SimplePerfTest.sh b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/SimplePerfTest.sh
new file mode 100755
index 0000000..d2d1efb
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/SimplePerfTest.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+if [ $# -ne 1 ]; then
+    echo Usage: $0 version
+    exit 1
+fi
+
+export MEM_OPTIONS="-Xms128m -Xmx128m"
+export GC_OPTIONS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime"
+
+LOG4J_OPTIONS="-Dlog4j.configurationFile=perf-CountingNoOpAppender.xml"
+LOG4J_OPTIONS="${LOG4J_OPTIONS} -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector"
+LOG4J_OPTIONS="${LOG4J_OPTIONS} -Dlog4j2.enable.threadlocals=true"
+export LOG4J_OPTIONS
+
+CP="log4j-api-${1}.jar:log4j-core-${1}.jar:disruptor-3.3.4.jar"
+CP="${CP}:${HOME}/Documents/log4j/log4j-core/target/test-classes"
+export CP
+
+export MAIN="org.apache.logging.log4j.core.async.perftest.SimplePerfTest"
+
+java ${MEM_OPTIONS} ${GC_OPTIONS} ${LOG4J_OPTIONS} -cp "${CP}" ${MAIN}


[28/50] [abbrv] logging-log4j2 git commit: Add missing annotations.

Posted by rp...@apache.org.
Add missing annotations.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 804fbe4f5572442681afeddfc2237e7c55372ed2
Parents: 6d9928e
Author: ggregory <gg...@apache.org>
Authored: Wed Mar 2 01:19:12 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Wed Mar 2 01:19:12 2016 -0800

----------------------------------------------------------------------
 .../java/org/apache/logging/log4j/message/ParameterizedMessage.java | 1 +
 .../apache/logging/log4j/message/ReusableParameterizedMessage.java  | 1 +
 2 files changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/804fbe4f/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
index d5179a6..fe22b02 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
@@ -76,6 +76,7 @@ public class ParameterizedMessage implements Message, StringBuilderFormattable {
      * @param throwable A Throwable.
      * @deprecated Use constructor ParameterizedMessage(String, Object[], Throwable) instead
      */
+    @Deprecated
     public ParameterizedMessage(final String messagePattern, final String[] arguments, final Throwable throwable) {
         this.argArray = arguments;
         this.throwable = throwable;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/804fbe4f/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
index 0e01cee..a75c2d0 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
@@ -71,6 +71,7 @@ public class ReusableParameterizedMessage implements ReusableMessage {
     public ReusableParameterizedMessage() {
     }
 
+    @Override
     public boolean isReused() {
         return true;
     }


[11/50] [abbrv] logging-log4j2 git commit: LOG4J2-1300 - Remove serializability from classes that don't need it

Posted by rp...@apache.org.
LOG4J2-1300 - Remove serializability from classes that don't need it

Removed serialVersionUID and Serializable from remaining classes.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: ac3e721f59fd75cb44bc96bafe26f35320c6f958
Parents: 88f04e3
Author: Matt Sicker <bo...@gmail.com>
Authored: Tue Mar 1 09:37:02 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Tue Mar 1 09:37:02 2016 -0600

----------------------------------------------------------------------
 .../logging/log4j/core/LoggerContext.java       |  1 -
 .../core/appender/db/jdbc/JdbcAppender.java     |  1 -
 .../log4j/core/appender/db/jpa/JpaAppender.java |  1 -
 .../log4j/core/appender/mom/JmsAppender.java    |  1 -
 .../appender/mom/jeromq/JeroMqAppender.java     |  2 --
 .../core/appender/mom/kafka/KafkaAppender.java  | 10 +++------
 .../core/appender/rewrite/RewriteAppender.java  |  2 --
 .../core/appender/routing/IdlePurgePolicy.java  |  1 -
 .../core/appender/routing/RoutingAppender.java  |  1 -
 .../log4j/core/config/DefaultAdvertiser.java    |  5 +----
 .../core/config/json/JsonConfiguration.java     | 21 +++++++++----------
 .../properties/PropertiesConfiguration.java     |  6 ++----
 .../log4j/core/config/xml/XmlConfiguration.java |  2 --
 .../core/config/yaml/YamlConfiguration.java     |  2 --
 .../util/DefaultShutdownCallbackRegistry.java   |  4 +---
 .../logging/log4j/core/util/KeyValuePair.java   | 22 ++------------------
 .../logging/log4j/core/util/WatchManager.java   | 11 +++++-----
 .../log4j/web/Log4jWebInitializerImpl.java      |  2 --
 .../log4j/web/appender/ServletAppender.java     |  2 --
 19 files changed, 24 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
index 4b80054..cb78fe4 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
@@ -62,7 +62,6 @@ public class LoggerContext extends AbstractLifeCycle implements org.apache.loggi
      */
     public static final String PROPERTY_CONFIG = "config";
 
-    private static final long serialVersionUID = 1L;
     private static final Configuration NULL_CONFIGURATION = new NullConfiguration();
 
     private final ConcurrentMap<String, Logger> loggers = new ConcurrentHashMap<>();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java
index 584e30f..0359117 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java
@@ -36,7 +36,6 @@ import org.apache.logging.log4j.core.util.Booleans;
  */
 @Plugin(name = "JDBC", category = "Core", elementType = "appender", printObject = true)
 public final class JdbcAppender extends AbstractDatabaseAppender<JdbcDatabaseManager> {
-    private static final long serialVersionUID = 1L;
 
     private final String description;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java
index 1f4a92b..bfbdca6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java
@@ -39,7 +39,6 @@ import org.apache.logging.log4j.util.Strings;
  */
 @Plugin(name = "JPA", category = "Core", elementType = "appender", printObject = true)
 public final class JpaAppender extends AbstractDatabaseAppender<JpaDatabaseManager> {
-    private static final long serialVersionUID = 1L;
 
     private final String description;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsAppender.java
index c714ef8..e454373 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsAppender.java
@@ -44,7 +44,6 @@ import org.apache.logging.log4j.core.net.JndiManager;
 @PluginAliases({"JMSQueue", "JMSTopic"})
 public class JmsAppender extends AbstractAppender {
 
-    private static final long serialVersionUID = 1L;
     private final JmsManager manager;
     private final MessageProducer producer;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
index 49345c7..974477b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
@@ -80,8 +80,6 @@ public final class JeroMqAppender extends AbstractAppender {
     // ZMQ sockets are not thread safe.
     private static ZMQ.Socket publisher;
 
-    private static final long serialVersionUID = 1L;
-
     private static final String SIMPLE_NAME = JeroMqAppender.class.getSimpleName();
 
     static {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
index 143ff33..ea6484e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
@@ -17,6 +17,9 @@
 
 package org.apache.logging.log4j.core.appender.mom.kafka;
 
+import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
+
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
@@ -31,19 +34,12 @@ import org.apache.logging.log4j.core.config.plugins.validation.constraints.Requi
 import org.apache.logging.log4j.core.layout.SerializedLayout;
 import org.apache.logging.log4j.core.util.StringEncoder;
 
-import java.io.Serializable;
-import java.nio.charset.StandardCharsets;
-
 /**
  * Sends log events to an Apache Kafka topic.
  */
 @Plugin(name = "Kafka", category = "Core", elementType = "appender", printObject = true)
 public final class KafkaAppender extends AbstractAppender {
 
-    /**
-     * 
-     */
-    private static final long serialVersionUID = 1L;
     @PluginFactory
     public static KafkaAppender createAppender(
             @PluginElement("Layout") final Layout<? extends Serializable> layout,

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java
index fe876e6..446fe04 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java
@@ -38,8 +38,6 @@ import org.apache.logging.log4j.core.util.Booleans;
  */
 @Plugin(name = "Rewrite", category = "Core", elementType = "appender", printObject = true)
 public final class RewriteAppender extends AbstractAppender {
-    
-    private static final long serialVersionUID = 1L;
 
     private final Configuration config;
     private final ConcurrentMap<String, AppenderControl> appenders = new ConcurrentHashMap<>();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index fe62783..953f1bc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -42,7 +42,6 @@ import org.apache.logging.log4j.status.StatusLogger;
 public class IdlePurgePolicy extends AbstractLifeCycle implements PurgePolicy, Runnable {
 
     private static final Logger LOGGER = StatusLogger.getLogger();
-    private static final long serialVersionUID = 7481062062560624564L;
     private final long timeToLive;
     private final ConcurrentMap<String, Long> appendersUsage = new ConcurrentHashMap<>();
     private RoutingAppender routingAppender;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
index a3fdcba..a6b5df0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
@@ -46,7 +46,6 @@ import org.apache.logging.log4j.core.util.Booleans;
  */
 @Plugin(name = "Routing", category = "Core", elementType = "appender", printObject = true)
 public final class RoutingAppender extends AbstractAppender {
-    private static final long serialVersionUID = 1L;
     private static final String DEFAULT_KEY = "ROUTING_APPENDER_DEFAULT";
     private final Routes routes;
     private final Route defaultRoute;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultAdvertiser.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultAdvertiser.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultAdvertiser.java
index 914777a..cc0e1bc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultAdvertiser.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultAdvertiser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.config;
 
-import java.io.Serializable;
 import java.util.Map;
 
 import org.apache.logging.log4j.core.config.plugins.Plugin;
@@ -26,9 +25,7 @@ import org.apache.logging.log4j.core.net.Advertiser;
  * The default advertiser does not do anything.
  */
 @Plugin(name = "default", category = Node.CATEGORY, elementType = "advertiser", printObject = false)
-public class DefaultAdvertiser implements Advertiser, Serializable {
-
-    private static final long serialVersionUID = 1L;
+public class DefaultAdvertiser implements Advertiser {
 
     /**
      * Does nothing.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
index e4bf0f0..fcde1d5 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
@@ -16,6 +16,16 @@
  */
 package org.apache.logging.log4j.core.config.json;
 
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -32,22 +42,11 @@ import org.apache.logging.log4j.core.config.status.StatusConfiguration;
 import org.apache.logging.log4j.core.util.FileWatcher;
 import org.apache.logging.log4j.core.util.Patterns;
 
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
 /**
  * Creates a Node hierarchy from a JSON file.
  */
 public class JsonConfiguration extends AbstractConfiguration implements Reconfigurable {
 
-    private static final long serialVersionUID = 1L;
     private static final String[] VERBOSE_CLASSES = new String[] { ResolverUtil.class.getName() };
     private final List<Status> status = new ArrayList<>();
     private JsonNode root;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfiguration.java
index 19dbbf3..8a8e9fa 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfiguration.java
@@ -16,22 +16,20 @@
  */
 package org.apache.logging.log4j.core.config.properties;
 
+import java.io.IOException;
+
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.ConfigurationSource;
 import org.apache.logging.log4j.core.config.Reconfigurable;
 import org.apache.logging.log4j.core.config.builder.api.Component;
 import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
 
-import java.io.IOException;
-
 /**
  * Configuration created from a properties file.
  * @since 2.4
  */
 public class PropertiesConfiguration extends BuiltConfiguration implements Reconfigurable {
 
-    private static final long serialVersionUID = 5198216024278070407L;
-
     public PropertiesConfiguration(ConfigurationSource source, Component root) {
         super(source, root);
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
index 1db5392..4369b89 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
@@ -63,8 +63,6 @@ import org.xml.sax.SAXException;
  */
 public class XmlConfiguration extends AbstractConfiguration implements Reconfigurable {
 
-    private static final long serialVersionUID = 1L;
-
     private static final String XINCLUDE_FIXUP_LANGUAGE =
             "http://apache.org/xml/features/xinclude/fixup-language";
     private static final String XINCLUDE_FIXUP_BASE_URIS =

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/config/yaml/YamlConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/yaml/YamlConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/yaml/YamlConfiguration.java
index b8d529d..6350a48 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/yaml/YamlConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/yaml/YamlConfiguration.java
@@ -28,8 +28,6 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
 
 public class YamlConfiguration extends JsonConfiguration {
 
-    private static final long serialVersionUID = 1L;
-
     public YamlConfiguration(final ConfigurationSource configSource) {
         super(configSource);
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java
index 196f2c8..8d08ecb 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java
@@ -17,7 +17,6 @@
 
 package org.apache.logging.log4j.core.util;
 
-import java.io.Serializable;
 import java.lang.ref.Reference;
 import java.lang.ref.SoftReference;
 import java.lang.ref.WeakReference;
@@ -37,10 +36,9 @@ import org.apache.logging.log4j.status.StatusLogger;
  *
  * @since 2.1
  */
-public class DefaultShutdownCallbackRegistry implements ShutdownCallbackRegistry, LifeCycle, Runnable, Serializable {
+public class DefaultShutdownCallbackRegistry implements ShutdownCallbackRegistry, LifeCycle, Runnable {
     /** Status logger. */
     protected static final Logger LOGGER = StatusLogger.getLogger();
-    private static final long serialVersionUID = 1L;
 
     private final AtomicReference<State> state = new AtomicReference<>(State.INITIALIZED);
     private final ThreadFactory threadFactory;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/util/KeyValuePair.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/KeyValuePair.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/KeyValuePair.java
index 7375be6..b6086c5 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/KeyValuePair.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/KeyValuePair.java
@@ -17,9 +17,6 @@
 
 package org.apache.logging.log4j.core.util;
 
-import java.io.InvalidObjectException;
-import java.io.ObjectInputStream;
-import java.io.ObjectStreamException;
 import java.io.Serializable;
 
 import org.apache.logging.log4j.core.config.Node;
@@ -34,9 +31,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
  * @since 2.1 implements {@link #hashCode()} and {@link #equals(Object)}
  */
 @Plugin(name = "KeyValuePair", category = Node.CATEGORY, printObject = true)
-public final class KeyValuePair implements Serializable {
-
-    private static final long serialVersionUID = 4331228262821046866L;
+public final class KeyValuePair {
 
     private final String key;
     private final String value;
@@ -77,17 +72,7 @@ public final class KeyValuePair implements Serializable {
         return new Builder();
     }
 
-    protected Object writeReplace() throws ObjectStreamException {
-        return newBuilder().setKey(this.key).setValue(this.value);
-    }
-
-    private void readObject(final ObjectInputStream stream) throws InvalidObjectException {
-        throw new InvalidObjectException("Builder proxy required");
-    }
-
-    public static class Builder implements org.apache.logging.log4j.core.util.Builder<KeyValuePair>, Serializable {
-
-        private static final long serialVersionUID = 1L;
+    public static class Builder implements org.apache.logging.log4j.core.util.Builder<KeyValuePair> {
 
         @PluginBuilderAttribute
         private String key;
@@ -110,9 +95,6 @@ public final class KeyValuePair implements Serializable {
             return new KeyValuePair(key, value);
         }
 
-        protected Object readResolve() throws ObjectStreamException {
-            return new KeyValuePair(key, value);
-        }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
index 12b07c3..db9fcfd 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
@@ -16,11 +16,6 @@
  */
 package org.apache.logging.log4j.core.util;
 
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.AbstractLifeCycle;
-import org.apache.logging.log4j.core.config.ConfigurationScheduler;
-import org.apache.logging.log4j.status.StatusLogger;
-
 import java.io.File;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -28,12 +23,16 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.AbstractLifeCycle;
+import org.apache.logging.log4j.core.config.ConfigurationScheduler;
+import org.apache.logging.log4j.status.StatusLogger;
+
 /**
  * Manages FileWatchers.
  */
 public class WatchManager extends AbstractLifeCycle {
 
-    private static final long serialVersionUID = 8998356999926962686L;
     private static Logger logger = StatusLogger.getLogger();
     private final ConcurrentMap<File, FileMonitor> watchers = new ConcurrentHashMap<>();
     private int intervalSeconds = 0;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
----------------------------------------------------------------------
diff --git a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
index 17f4ece..2da549c 100644
--- a/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
+++ b/log4j-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java
@@ -49,8 +49,6 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe
 
     private static final String WEB_INF = "/WEB-INF/";
 
-    private static final long serialVersionUID = 1L;
-
     static {
         if (Loader.isClassAvailable("org.apache.logging.log4j.core.web.JNDIContextFilter")) {
             throw new IllegalStateException("You are using Log4j 2 in a web application with the old, extinct "

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ac3e721f/log4j-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java
----------------------------------------------------------------------
diff --git a/log4j-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java b/log4j-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java
index c171250..606e45c 100644
--- a/log4j-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java
+++ b/log4j-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java
@@ -38,8 +38,6 @@ import org.apache.logging.log4j.web.WebLoggerContextUtils;
 @Plugin(name = "Servlet", category = "Core", elementType = "appender", printObject = true)
 public class ServletAppender extends AbstractAppender {
 
-    private static final long serialVersionUID = 1L;
-
     private final ServletContext servletContext;
 
     private ServletAppender(final String name, final AbstractStringLayout layout, final Filter filter,


[50/50] [abbrv] logging-log4j2 git commit: Merge remote-tracking branch 'remotes/origin/master' into LOG4J2-1278-gc-free-logger

Posted by rp...@apache.org.
Merge remote-tracking branch 'remotes/origin/master' into LOG4J2-1278-gc-free-logger

Conflicts:
	log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 2faae9c97418fddac10c399915ef424263c3e982
Parents: 9d9d143 963f965
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 4 23:22:47 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 4 23:22:47 2016 +0900

----------------------------------------------------------------------
 log4j-1.2-api/src/site/xdoc/index.xml           |    3 +-
 .../org/apache/logging/log4j/MarkerManager.java |   49 +-
 .../log4j/message/ParameterizedMessage.java     |    1 +
 .../logging/log4j/message/ReusableMessage.java  |    9 +-
 .../message/ReusableParameterizedMessage.java   |    6 +-
 .../ReusableParameterizedMessageFactory.java    |    3 +
 .../logging/log4j/simple/SimpleLogger.java      |   10 +-
 .../logging/log4j/spi/AbstractLogger.java       |    6 +-
 .../apache/logging/log4j/util/LoaderUtil.java   |    2 +-
 .../logging/log4j/util/LowLevelLogUtil.java     |   67 ++
 .../log4j/util/PerformanceSensitive.java        |    4 +-
 .../logging/log4j/util/PropertiesUtil.java      |   12 +-
 .../java/org/apache/log4j/util/SerialUtil.java  |   65 -
 .../java/org/apache/log4j/util/StringsTest.java |   36 -
 .../logging/log4j/AbstractLoggerTest.java       |    2 -
 .../logging/log4j/LoggerSupplierTest.java       |   24 +-
 .../org/apache/logging/log4j/LoggerTest.java    | 1107 +++++++++---------
 .../java/org/apache/logging/log4j/Timer.java    |  184 ++-
 .../logging/log4j/junit/BundleTestInfo.java     |   66 ++
 .../org/apache/logging/log4j/junit/Mutable.java |   35 +
 .../apache/logging/log4j/junit/OsgiRule.java    |   68 ++
 .../apache/logging/log4j/junit/SerialUtil.java  |   65 +
 .../log4j/message/FormattedMessageTest.java     |    1 +
 .../log4j/message/LocalizedMessageTest.java     |    1 +
 .../log4j/message/MessageFormatMessageTest.java |    1 +
 .../apache/logging/log4j/message/Mutable.java   |   34 -
 .../log4j/message/ObjectMessageTest.java        |    3 +-
 .../log4j/message/ParameterizedMessageTest.java |    1 +
 .../message/StringFormattedMessageTest.java     |    1 +
 .../log4j/osgi/AbstractLoadBundleTest.java      |    2 +
 .../logging/log4j/osgi/BundleTestInfo.java      |   80 --
 .../org/apache/logging/log4j/osgi/OsgiRule.java |   69 --
 .../logging/log4j/util/ReflectionUtilTest.java  |    2 +
 .../apache/logging/log4j/util/StringsTest.java  |    9 +
 .../logging/log4j/core/AbstractLifeCycle.java   |    6 +-
 .../logging/log4j/core/AbstractLogEvent.java    |   10 +
 .../org/apache/logging/log4j/core/LogEvent.java |   18 +-
 .../logging/log4j/core/LoggerContext.java       |    1 -
 .../log4j/core/appender/AbstractAppender.java   |    2 -
 .../appender/AbstractOutputStreamAppender.java  |    2 -
 .../core/appender/AbstractWriterAppender.java   |    2 -
 .../log4j/core/appender/AsyncAppender.java      |    1 -
 .../log4j/core/appender/ConsoleAppender.java    |    3 +-
 .../core/appender/DefaultErrorHandler.java      |    5 +-
 .../log4j/core/appender/FailoverAppender.java   |    2 -
 .../log4j/core/appender/FileAppender.java       |    1 -
 .../core/appender/MemoryMappedFileAppender.java |    2 -
 .../core/appender/OutputStreamAppender.java     |    2 -
 .../core/appender/RandomAccessFileAppender.java |    2 -
 .../core/appender/RollingFileAppender.java      |    1 -
 .../RollingRandomAccessFileAppender.java        |    3 -
 .../log4j/core/appender/SmtpAppender.java       |    1 -
 .../log4j/core/appender/SocketAppender.java     |    2 -
 .../log4j/core/appender/SyslogAppender.java     |    1 -
 .../log4j/core/appender/WriterAppender.java     |    2 -
 .../appender/db/AbstractDatabaseAppender.java   |    1 -
 .../core/appender/db/jdbc/JdbcAppender.java     |    1 -
 .../db/jpa/AbstractLogEventWrapperEntity.java   |   20 +
 .../appender/db/jpa/BasicLogEventEntity.java    |   22 +
 .../log4j/core/appender/db/jpa/JpaAppender.java |    1 -
 .../log4j/core/appender/mom/JmsAppender.java    |    1 -
 .../appender/mom/jeromq/JeroMqAppender.java     |   17 +-
 .../core/appender/mom/kafka/KafkaAppender.java  |   10 +-
 .../core/appender/rewrite/RewriteAppender.java  |    2 -
 .../rolling/DefaultRolloverStrategy.java        |    4 +-
 .../action/PathSortByModificationTime.java      |    6 +-
 .../core/appender/routing/IdlePurgePolicy.java  |   99 +-
 .../core/appender/routing/RoutingAppender.java  |    3 +-
 .../logging/log4j/core/async/AsyncLogger.java   |   18 +-
 .../log4j/core/async/AsyncLoggerConfig.java     |    6 +-
 .../log4j/core/async/AsyncLoggerContext.java    |    2 -
 .../log4j/core/async/RingBufferLogEvent.java    |   35 +-
 .../async/RingBufferLogEventTranslator.java     |   28 +-
 .../core/async/ThreadNameCachingStrategy.java   |    5 +-
 .../core/config/AbstractConfiguration.java      |   40 +-
 .../log4j/core/config/AppenderControl.java      |    1 -
 .../core/config/ConfigurationScheduler.java     |    1 -
 .../core/config/ConfiguratonFileWatcher.java    |    4 +-
 .../log4j/core/config/DefaultAdvertiser.java    |    5 +-
 .../log4j/core/config/DefaultConfiguration.java |    2 -
 .../logging/log4j/core/config/LoggerConfig.java |    1 -
 .../log4j/core/config/NullConfiguration.java    |    1 -
 .../log4j/core/config/OrderComparator.java      |    4 +-
 .../core/config/json/JsonConfiguration.java     |   21 +-
 .../config/plugins/processor/PluginEntry.java   |    2 +-
 .../core/config/plugins/util/PluginBuilder.java |   11 +-
 .../properties/PropertiesConfiguration.java     |    6 +-
 .../log4j/core/config/xml/XmlConfiguration.java |    2 -
 .../core/config/yaml/YamlConfiguration.java     |    2 -
 .../log4j/core/filter/AbstractFilter.java       |    2 -
 .../log4j/core/filter/AbstractFilterable.java   |    2 -
 .../logging/log4j/core/filter/BurstFilter.java  |    7 +-
 .../log4j/core/filter/CompositeFilter.java      |    2 -
 .../core/filter/DynamicThresholdFilter.java     |    2 -
 .../log4j/core/filter/LevelRangeFilter.java     |    2 -
 .../logging/log4j/core/filter/MapFilter.java    |    2 -
 .../logging/log4j/core/filter/MarkerFilter.java |    2 -
 .../logging/log4j/core/filter/RegexFilter.java  |    2 -
 .../logging/log4j/core/filter/ScriptFilter.java |    1 -
 .../log4j/core/filter/StructuredDataFilter.java |    2 -
 .../core/filter/ThreadContextMapFilter.java     |    2 -
 .../log4j/core/filter/ThresholdFilter.java      |    2 -
 .../logging/log4j/core/filter/TimeFilter.java   |   37 +-
 .../logging/log4j/core/impl/Log4jLogEvent.java  |   96 +-
 .../log4j/core/jackson/LogEventMixIn.java       |   10 +
 .../apache/logging/log4j/core/jmx/Server.java   |    1 -
 .../log4j/core/layout/AbstractCsvLayout.java    |    1 -
 .../core/layout/AbstractJacksonLayout.java      |    1 -
 .../log4j/core/layout/AbstractLayout.java       |    4 +-
 .../log4j/core/layout/AbstractStringLayout.java |   16 -
 .../log4j/core/layout/CsvLogEventLayout.java    |    4 +-
 .../log4j/core/layout/CsvParameterLayout.java   |    2 -
 .../logging/log4j/core/layout/GelfLayout.java   |    3 +-
 .../logging/log4j/core/layout/HtmlLayout.java   |    1 -
 .../logging/log4j/core/layout/JsonLayout.java   |    2 -
 .../log4j/core/layout/PatternLayout.java        |    2 -
 .../logging/log4j/core/layout/PatternMatch.java |   20 +-
 .../log4j/core/layout/Rfc5424Layout.java        |    2 -
 .../log4j/core/layout/SerializedLayout.java     |    2 -
 .../logging/log4j/core/layout/SyslogLayout.java |    2 -
 .../log4j/core/layout/TextEncoderHelper.java    |   19 +-
 .../logging/log4j/core/layout/XmlLayout.java    |    2 -
 .../logging/log4j/core/lookup/MapLookup.java    |    2 +-
 .../log4j/core/net/MulticastDnsAdvertiser.java  |   34 +-
 .../logging/log4j/core/osgi/Activator.java      |    6 +-
 .../core/pattern/DatePatternConverter.java      |    4 +-
 .../log4j/core/pattern/MaxLengthConverter.java  |  103 ++
 .../core/pattern/MessagePatternConverter.java   |    1 -
 .../log4j/core/pattern/NdcPatternConverter.java |   52 +-
 .../core/pattern/ThreadIdPatternConverter.java  |   61 +
 .../pattern/ThreadNamePatternConverter.java     |   59 +
 .../core/pattern/ThreadPatternConverter.java    |   59 -
 .../pattern/ThreadPriorityPatternConverter.java |   61 +
 .../util/DefaultShutdownCallbackRegistry.java   |    4 +-
 .../logging/log4j/core/util/KeyValuePair.java   |   22 +-
 .../logging/log4j/core/util/WatchManager.java   |   13 +-
 .../core/util/datetime/FixedDateFormat.java     |    6 +-
 log4j-core/src/main/resources/Log4j-events.dtd  |    4 +-
 log4j-core/src/main/resources/Log4j-events.xsd  |    2 +
 .../log4j/core/BasicConfigurationFactory.java   |    1 -
 .../apache/logging/log4j/core/LogEventTest.java |    2 +
 .../log4j/core/TimestampMessageTest.java        |    7 +-
 .../MemoryMappedFileAppenderLocationTest.java   |    2 +-
 .../MemoryMappedFileAppenderRemapTest.java      |    2 +-
 .../MemoryMappedFileAppenderSimpleTest.java     |    2 +-
 .../db/AbstractDatabaseAppenderTest.java        |    2 -
 .../core/appender/db/jpa/JpaH2AppenderTest.java |    2 +-
 .../db/jpa/JpaHyperSqlAppenderTest.java         |    2 +-
 .../core/appender/db/jpa/TestBaseEntity.java    |   12 +
 .../appender/mom/jeromq/JeroMqAppenderTest.java |    6 +-
 .../appender/rolling/PatternProcessorTest.java  |    1 -
 ...ollingAppenderNoUnconditionalDeleteTest.java |   22 +-
 .../core/async/RingBufferLogEventTest.java      |   10 +-
 .../async/perftest/CountingNoOpAppender.java    |    4 -
 .../log4j/core/async/perftest/PerfTest.java     |    4 +-
 .../core/async/perftest/PerfTestDriver.java     |    2 +-
 .../async/perftest/PerfTestResultFormatter.java |    4 +-
 .../core/async/perftest/SimplePerfTest.java     |    1 -
 .../log4j/core/async/perftest/SimplePerfTest.sh |   22 +
 ...DynamicThresholdFilterSerializationTest.java |   47 -
 .../log4j/core/impl/Log4jLogEventTest.java      |    3 +-
 .../core/layout/SerializableLayoutTest.java     |   66 --
 .../log4j/core/lookup/MapLookupTest.java        |   25 +
 .../log4j/core/net/server/ThreadIdFilter.java   |   40 +
 .../log4j/core/net/server/ThreadNameFilter.java |    3 +
 .../core/net/server/ThreadPriorityFilter.java   |   40 +
 .../core/pattern/MaxLengthConverterTest.java    |   73 ++
 .../log4j/core/pattern/PatternParserTest.java   |   60 +
 .../pattern/ThreadIdPatternConverterTest.java   |   39 +
 .../pattern/ThreadNamePatternConverterTest.java |   39 +
 .../ThreadPriorityPatternConverterTest.java     |   39 +
 .../log4j/core/util/CronExpressionTest.java     |    1 -
 .../util/KeyValuePairSerializationTest.java     |   39 -
 .../log4j/core/util/WatchManagerTest.java       |    8 +-
 .../log4j/test/appender/AlwaysFailAppender.java |    2 -
 .../logging/log4j/test/layout/BasicLayout.java  |    1 -
 .../log4j/test/layout/SerializableLayout.java   |   48 -
 .../src/test/resources/JeroMqAppenderTest.xml   |    3 +-
 .../log4j/flume/appender/FlumeAppender.java     |    1 -
 .../log4j/flume/appender/FlumeEvent.java        |   18 +
 log4j-flume-ng/src/site/xdoc/index.xml.vm       |    1 +
 log4j-iostreams/src/site/xdoc/index.xml         |    1 +
 .../logging/log4j/io/AbstractStreamTest.java    |    2 +-
 log4j-jcl/src/site/xdoc/index.xml               |    3 +-
 log4j-jmx-gui/src/site/xdoc/index.xml           |    3 +-
 .../log4j/jul/DefaultLevelConverter.java        |    4 +-
 log4j-jul/src/site/xdoc/index.xml               |    1 +
 .../logging/log4j/jul/AbstractLoggerTest.java   |    4 +-
 log4j-liquibase/src/site/xdoc/index.xml         |    3 +-
 .../log4j/nosql/appender/NoSqlAppender.java     |    1 -
 .../nosql/appender/NoSqlDatabaseManager.java    |    2 +
 log4j-nosql/src/site/xdoc/index.xml.vm          |    1 +
 .../appender/NoSqlDatabaseManagerTest.java      |    6 +
 .../log4j/perf/jmh/CollectionsBenchmark.java    |   12 +-
 .../log4j/perf/jmh/LoggerConfigBenchmark.java   |    8 +-
 .../perf/jmh/TextEncoderHelperBenchmark.java    |  243 ++++
 .../perf/jmh/ThreadLocalVsPoolBenchmark.java    |    2 +-
 .../logging/log4j/perf/nogc/AbstractLogger.java |    3 +-
 .../logging/log4j/perf/nogc/DemoAppender.java   |    3 +-
 .../logging/log4j/perf/nogc/NoGcLayout.java     |    6 +-
 .../logging/log4j/perf/nogc/NoGcLogger.java     |    2 +-
 .../logging/log4j/perf/nogc/NoGcMessage.java    |    6 +-
 .../perf/nogc/NoGcMessagePatternConverter.java  |    3 -
 .../CustomConfigurationFactory.java             |    2 -
 .../configuration/CustomConfigurationTest.java  |    2 +-
 log4j-slf4j-impl/src/site/xdoc/index.xml        |    3 +-
 .../org/apache/logging/slf4j/Log4j1222Test.java |    1 -
 log4j-taglib/src/site/xdoc/index.xml            |    3 +-
 .../logging/log4j/taglib/CatchingTagTest.java   |    6 +-
 .../logging/log4j/taglib/EnterTagTest.java      |   79 ++
 .../logging/log4j/taglib/EntryTagTest.java      |   79 --
 log4j-to-slf4j/src/site/xdoc/index.xml          |    7 +-
 .../log4j/web/Log4jServletContextListener.java  |    3 +-
 .../log4j/web/Log4jWebInitializerImpl.java      |    2 -
 .../log4j/web/appender/ServletAppender.java     |    2 -
 log4j-web/src/site/xdoc/index.xml               |    3 +-
 .../web/Log4jServletContextListenerTest.java    |   11 -
 pom.xml                                         |    2 +-
 src/changes/changes.xml                         |   30 +
 src/site/xdoc/manual/layouts.xml.vm             |   66 +-
 220 files changed, 2655 insertions(+), 1902 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2faae9c9/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
----------------------------------------------------------------------
diff --cc log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
index b14d606,0950d5d..b5f6da0
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
@@@ -25,7 -27,8 +27,8 @@@ import org.apache.logging.log4j.util.Pe
   * This class is immutable.
   * </p>
   */
+ @PerformanceSensitive("allocation")
 -public final class ReusableParameterizedMessageFactory extends AbstractMessageFactory {
 +public final class ReusableParameterizedMessageFactory extends AbstractMessageFactory implements MessageFactory2 {
  
      /**
       * Instance of ReusableParameterizedMessageFactory.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2faae9c9/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2faae9c9/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
----------------------------------------------------------------------


[42/50] [abbrv] logging-log4j2 git commit: Remove stray serialVersionUID field.

Posted by rp...@apache.org.
Remove stray serialVersionUID field.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: ee4573bf8f0bd5adad468cb3d887a043fa4a38f5
Parents: 75fb3b9
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 21:48:57 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 21:48:57 2016 -0600

----------------------------------------------------------------------
 .../java/org/apache/logging/log4j/core/layout/PatternLayout.java   | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ee4573bf/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java
index 970e3f0..ea0ec79 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java
@@ -77,8 +77,6 @@ public final class PatternLayout extends AbstractStringLayout {
     /** Key to identify pattern converters. */
     public static final String KEY = "Converter";
 
-    private static final long serialVersionUID = 1L;
-
     private static final ThreadLocal<TextEncoderHelper> textEncoderHelper = new ThreadLocal<>();
 
     /**


[29/50] [abbrv] logging-log4j2 git commit: Remove unused imports

Posted by rp...@apache.org.
Remove unused imports

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: fc918475cf2b2fd120b4f832ec473396a51afc21
Parents: 804fbe4
Author: ggregory <gg...@apache.org>
Authored: Wed Mar 2 01:20:35 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Wed Mar 2 01:20:35 2016 -0800

----------------------------------------------------------------------
 .../logging/log4j/AbstractLoggerTest.java       |    2 -
 .../org/apache/logging/log4j/LoggerTest.java    | 1107 +++++++++---------
 .../apache/logging/log4j/core/jmx/Server.java   |    1 -
 .../core/pattern/MessagePatternConverter.java   |    1 -
 .../appender/rolling/PatternProcessorTest.java  |    1 -
 .../async/perftest/CountingNoOpAppender.java    |    4 -
 .../log4j/core/util/CronExpressionTest.java     |    1 -
 .../log4j/core/util/WatchManagerTest.java       |    2 -
 .../log4j/jmx/gui/ClientGuiJConsolePlugin.java  |    2 -
 .../logging/log4j/perf/nogc/AbstractLogger.java |    1 -
 .../logging/log4j/perf/nogc/DemoAppender.java   |    1 -
 .../perf/nogc/NoGcMessagePatternConverter.java  |    3 -
 .../CustomConfigurationFactory.java             |    2 -
 .../org/apache/logging/slf4j/Log4j1222Test.java |    1 -
 14 files changed, 553 insertions(+), 576 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
index 399b450..ac77b97 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
@@ -20,14 +20,12 @@ import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 
 import org.apache.logging.log4j.message.Message;
-import org.apache.logging.log4j.message.MessageFactory;
 import org.apache.logging.log4j.message.ObjectMessage;
 import org.apache.logging.log4j.message.ParameterizedMessage;
 import org.apache.logging.log4j.message.ParameterizedMessageFactory;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.spi.AbstractLogger;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 import static org.junit.Assert.*;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java
index 323d8fb..3fe3b61 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java
@@ -1,554 +1,553 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j;
-
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.endsWith;
-import static org.hamcrest.CoreMatchers.startsWith;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.logging.log4j.message.EntryMessage;
-import org.apache.logging.log4j.message.JsonMessage;
-import org.apache.logging.log4j.message.Message;
-import org.apache.logging.log4j.message.ObjectMessage;
-import org.apache.logging.log4j.message.ParameterizedMessageFactory;
-import org.apache.logging.log4j.message.SimpleMessageFactory;
-import org.apache.logging.log4j.message.StringFormatterMessageFactory;
-import org.apache.logging.log4j.message.StructuredDataMessage;
-import org.apache.logging.log4j.util.MessageSupplier;
-import org.apache.logging.log4j.util.Strings;
-import org.apache.logging.log4j.util.Supplier;
-import org.junit.Before;
-import org.junit.Test;
-/**
- *
- */
-public class LoggerTest {
-
-    private static class TestParameterizedMessageFactory {
-        // empty
-    }
-
-    private static class TestStringFormatterMessageFactory {
-        // empty
-    }
-
-    private final TestLogger logger = (TestLogger) LogManager.getLogger("LoggerTest");
-    private final List<String> results = logger.getEntries();
-
-    @Test
-    public void basicFlow() {
-        logger.entry();
-        logger.exit();
-        assertEquals(2, results.size());
-        assertThat("Incorrect Entry", results.get(0), equalTo("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("incorrect Exit", results.get(1), equalTo("EXIT[ FLOW ] TRACE Exit"));
-
-    }
-
-    @Test
-    public void flowTracingMessage() {
-        logger.traceEntry(new JsonMessage(System.getProperties()));
-        final Response response = new Response(-1, "Generic error");
-        logger.traceExit(new JsonMessage(response),  response);
-        assertEquals(2, results.size());
-        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("Missing entry data", results.get(0), containsString("\"java.runtime.name\":"));
-        assertThat("incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
-        assertThat("Missing exit data", results.get(1), containsString("\"message\":\"Generic error\""));
-    }
-
-    @Test
-    public void flowTracingString_ObjectArray1() {
-        logger.traceEntry("doFoo(a={}, b={})", 1, 2);
-        logger.traceExit("doFoo(a=1, b=2): {}", 3);
-        assertEquals(2, results.size());
-        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
-        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
-        assertThat("Missing exit data", results.get(1), containsString("doFoo(a=1, b=2): 3"));
-    }
-
-    @Test
-    public void flowTracingExitValueOnly() {
-        logger.traceEntry("doFoo(a={}, b={})", 1, 2);
-        logger.traceExit(3);
-        assertEquals(2, results.size());
-        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
-        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
-        assertThat("Missing exit data", results.get(1), containsString("3"));
-    }
-
-    @Test
-    public void flowTracingString_ObjectArray2() {
-        EntryMessage msg = logger.traceEntry("doFoo(a={}, b={})", 1, 2);
-        logger.traceExit(msg, 3);
-        assertEquals(2, results.size());
-        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
-        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
-        assertThat("Missing exit data", results.get(1), containsString("doFoo(a=1, b=2): 3"));
-    }
-
-    @Test
-    public void flowTracingVoidReturn() {
-        EntryMessage msg = logger.traceEntry("doFoo(a={}, b={})", 1, 2);
-        logger.traceExit(msg);
-        assertEquals(2, results.size());
-        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
-        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
-        assertThat("Missing exit data", results.get(1), endsWith("doFoo(a=1, b=2)"));
-    }
-
-    @Test
-    public void flowTracingNoExitArgs() {
-        logger.traceEntry();
-        logger.traceExit();
-        assertEquals(2, results.size());
-        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
-    }
-
-    @Test
-    public void flowTracingNoArgs() {
-        final EntryMessage message = logger.traceEntry();
-        logger.traceExit(message);
-        assertEquals(2, results.size());
-        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
-    }
-
-    @Test
-    public void flowTracingString_SupplierOfObjectMessages() {
-        EntryMessage msg = logger.traceEntry("doFoo(a={}, b={})", new Supplier<Message>() {
-            @Override
-            public Message get() {
-                return new ObjectMessage(1);
-            }
-        }, new Supplier<Message>() {
-            @Override
-            public Message get() {
-                return new ObjectMessage(2);
-            }
-        });
-        logger.traceExit(msg, 3);
-        assertEquals(2, results.size());
-        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
-        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
-        assertThat("Missing exit data", results.get(1), containsString("doFoo(a=1, b=2): 3"));
-    }
-
-    @Test
-    public void flowTracingString_SupplierOfStrings() {
-        EntryMessage msg = logger.traceEntry("doFoo(a={}, b={})", new Supplier<String>() {
-            @Override
-            public String get() {
-                return "1";
-            }
-        }, new Supplier<String>() {
-            @Override
-            public String get() {
-                return "2";
-            }
-        });
-        logger.traceExit(msg, 3);
-        assertEquals(2, results.size());
-        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
-        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
-        assertThat("Missing exit data", results.get(1), containsString("doFoo(a=1, b=2): 3"));
-    }
-
-    @Test
-    public void catching() {
-        try {
-            throw new NullPointerException();
-        } catch (final Exception e) {
-            logger.catching(e);
-            assertEquals(1, results.size());
-            assertThat("Incorrect Catching",
-                    results.get(0), startsWith("CATCHING[ EXCEPTION ] ERROR Catching java.lang.NullPointerException"));
-        }
-    }
-
-    @Test
-    public void debug() {
-        logger.debug("Debug message");
-        assertEquals(1, results.size());
-        assertTrue("Incorrect message", results.get(0).startsWith(" DEBUG Debug message"));
-    }
-
-    @Test
-    public void debugObject() {
-        logger.debug(new Date());
-        assertEquals(1, results.size());
-        assertTrue("Invalid length", results.get(0).length() > 7);
-    }
-
-    @Test
-    public void debugWithParms() {
-        logger.debug("Hello, {}", "World");
-        assertEquals(1, results.size());
-        assertTrue("Incorrect substitution", results.get(0).startsWith(" DEBUG Hello, World"));
-    }
-
-    @Test
-    public void debugWithParmsAndThrowable() {
-        logger.debug("Hello, {}", "World", new RuntimeException("Test Exception"));
-        assertEquals(1, results.size());
-        assertTrue("Unexpected results: " + results.get(0),
-            results.get(0).startsWith(" DEBUG Hello, World java.lang.RuntimeException: Test Exception"));
-    }
-
-    @Test
-    public void getFormatterLogger() {
-        // The TestLogger logger was already created in an instance variable for this class.
-        // The message factory is only used when the logger is created.
-        final TestLogger testLogger = (TestLogger) LogManager.getFormatterLogger();
-        final TestLogger altLogger = (TestLogger) LogManager.getFormatterLogger(getClass());
-        assertEquals(testLogger.getName(), altLogger.getName());
-        assertNotNull(testLogger);
-        assertTrue(testLogger.getMessageFactory() instanceof StringFormatterMessageFactory);
-        assertEquals(StringFormatterMessageFactory.INSTANCE, testLogger.getMessageFactory());
-        testLogger.debug("%,d", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getFormatterLogger_Class() {
-        // The TestLogger logger was already created in an instance variable for this class.
-        // The message factory is only used when the logger is created.
-        final TestLogger testLogger = (TestLogger) LogManager.getFormatterLogger(TestStringFormatterMessageFactory.class);
-        assertNotNull(testLogger);
-        assertTrue(testLogger.getMessageFactory() instanceof StringFormatterMessageFactory);
-        assertEquals(StringFormatterMessageFactory.INSTANCE, testLogger.getMessageFactory());
-        testLogger.debug("%,d", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getFormatterLogger_Object() {
-        // The TestLogger logger was already created in an instance variable for this class.
-        // The message factory is only used when the logger is created.
-        final TestLogger testLogger = (TestLogger) LogManager.getFormatterLogger(new TestStringFormatterMessageFactory());
-        assertNotNull(testLogger);
-        assertTrue(testLogger.getMessageFactory() instanceof StringFormatterMessageFactory);
-        assertEquals(StringFormatterMessageFactory.INSTANCE, testLogger.getMessageFactory());
-        testLogger.debug("%,d", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getFormatterLogger_String() {
-        final StringFormatterMessageFactory messageFactory = StringFormatterMessageFactory.INSTANCE;
-        final TestLogger testLogger = (TestLogger) LogManager.getFormatterLogger("getLogger_String_StringFormatterMessageFactory");
-        assertNotNull(testLogger);
-        assertTrue(testLogger.getMessageFactory() instanceof StringFormatterMessageFactory);
-        assertEquals(messageFactory, testLogger.getMessageFactory());
-        testLogger.debug("%,d", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getLogger_Class_ParameterizedMessageFactory() {
-        // The TestLogger logger was already created in an instance variable for this class.
-        // The message factory is only used when the logger is created.
-        final ParameterizedMessageFactory messageFactory = ParameterizedMessageFactory.INSTANCE;
-        final TestLogger testLogger = (TestLogger) LogManager.getLogger(TestParameterizedMessageFactory.class,
-                messageFactory);
-        assertNotNull(testLogger);
-        assertEquals(messageFactory, testLogger.getMessageFactory());
-        testLogger.debug("{}", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(" DEBUG " + Integer.MAX_VALUE, testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getLogger_Class_StringFormatterMessageFactory() {
-        // The TestLogger logger was already created in an instance variable for this class.
-        // The message factory is only used when the logger is created.
-        final TestLogger testLogger = (TestLogger) LogManager.getLogger(TestStringFormatterMessageFactory.class,
-                StringFormatterMessageFactory.INSTANCE);
-        assertNotNull(testLogger);
-        assertEquals(StringFormatterMessageFactory.INSTANCE, testLogger.getMessageFactory());
-        testLogger.debug("%,d", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getLogger_Object_ParameterizedMessageFactory() {
-        // The TestLogger logger was already created in an instance variable for this class.
-        // The message factory is only used when the logger is created.
-        final ParameterizedMessageFactory messageFactory =  ParameterizedMessageFactory.INSTANCE;
-        final TestLogger testLogger = (TestLogger) LogManager.getLogger(new TestParameterizedMessageFactory(),
-                messageFactory);
-        assertNotNull(testLogger);
-        assertEquals(messageFactory, testLogger.getMessageFactory());
-        testLogger.debug("{}", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(" DEBUG " + Integer.MAX_VALUE, testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getLogger_Object_StringFormatterMessageFactory() {
-        // The TestLogger logger was already created in an instance variable for this class.
-        // The message factory is only used when the logger is created.
-        final StringFormatterMessageFactory messageFactory = StringFormatterMessageFactory.INSTANCE;
-        final TestLogger testLogger = (TestLogger) LogManager.getLogger(new TestStringFormatterMessageFactory(),
-                messageFactory);
-        assertNotNull(testLogger);
-        assertEquals(messageFactory, testLogger.getMessageFactory());
-        testLogger.debug("%,d", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getLogger_String_MessageFactoryMismatch() {
-        final StringFormatterMessageFactory messageFactory = StringFormatterMessageFactory.INSTANCE;
-        final TestLogger testLogger = (TestLogger) LogManager.getLogger("getLogger_String_MessageFactoryMismatch",
-                messageFactory);
-        assertNotNull(testLogger);
-        assertEquals(messageFactory, testLogger.getMessageFactory());
-        final TestLogger testLogger2 = (TestLogger) LogManager.getLogger("getLogger_String_MessageFactoryMismatch",
-                ParameterizedMessageFactory.INSTANCE);
-        assertNotNull(testLogger2);
-        //TODO: How to test?
-        //This test context always creates new loggers, other test context impls I tried fail other tests.
-        //assertEquals(messageFactory, testLogger2.getMessageFactory());
-        testLogger.debug("%,d", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getLogger_String_ParameterizedMessageFactory() {
-        final ParameterizedMessageFactory messageFactory =  ParameterizedMessageFactory.INSTANCE;
-        final TestLogger testLogger = (TestLogger) LogManager.getLogger("getLogger_String_ParameterizedMessageFactory",
-                messageFactory);
-        assertNotNull(testLogger);
-        assertEquals(messageFactory, testLogger.getMessageFactory());
-        testLogger.debug("{}", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(" DEBUG " + Integer.MAX_VALUE, testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getLogger_String_SimpleMessageFactory() {
-        final SimpleMessageFactory messageFactory = SimpleMessageFactory.INSTANCE;
-        final TestLogger testLogger = (TestLogger) LogManager.getLogger("getLogger_String_StringFormatterMessageFactory",
-                messageFactory);
-        assertNotNull(testLogger);
-        assertEquals(messageFactory, testLogger.getMessageFactory());
-        testLogger.debug("{} %,d {foo}", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(" DEBUG {} %,d {foo}", testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getLogger_String_StringFormatterMessageFactory() {
-        final StringFormatterMessageFactory messageFactory = StringFormatterMessageFactory.INSTANCE;
-        final TestLogger testLogger = (TestLogger) LogManager.getLogger("getLogger_String_StringFormatterMessageFactory",
-                messageFactory);
-        assertNotNull(testLogger);
-        assertEquals(messageFactory, testLogger.getMessageFactory());
-        testLogger.debug("%,d", Integer.MAX_VALUE);
-        assertEquals(1, testLogger.getEntries().size());
-        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
-    }
-
-    @Test
-    public void getLoggerByClass() {
-        final Logger classLogger = LogManager.getLogger(LoggerTest.class);
-        assertNotNull(classLogger);
-    }
-
-    @Test
-    public void getLoggerByNullClass() {
-        // Returns a SimpleLogger
-        assertNotNull(LogManager.getLogger((Class<?>) null));
-    }
-
-    @Test
-    public void getLoggerByNullObject() {
-        // Returns a SimpleLogger
-        assertNotNull(LogManager.getLogger((Object) null));
-    }
-
-    @Test
-    public void getLoggerByNullString() {
-        // Returns a SimpleLogger
-        assertNotNull(LogManager.getLogger((String) null));
-    }
-
-    @Test
-    public void getLoggerByObject() {
-        final Logger classLogger = LogManager.getLogger(this);
-        assertNotNull(classLogger);
-        assertEquals(classLogger, LogManager.getLogger(LoggerTest.class));
-    }
-
-    @Test
-    public void getRootLogger() {
-        assertNotNull(LogManager.getRootLogger());
-        assertNotNull(LogManager.getLogger(Strings.EMPTY));
-        assertNotNull(LogManager.getLogger(LogManager.ROOT_LOGGER_NAME));
-        assertEquals(LogManager.getRootLogger(), LogManager.getLogger(Strings.EMPTY));
-        assertEquals(LogManager.getRootLogger(), LogManager.getLogger(LogManager.ROOT_LOGGER_NAME));
-    }
-
-    @Test
-    public void isAllEnabled() {
-        assertTrue("Incorrect level", logger.isEnabled(Level.ALL));
-    }
-
-    @Test
-    public void isDebugEnabled() {
-        assertTrue("Incorrect level", logger.isDebugEnabled());
-        assertTrue("Incorrect level", logger.isEnabled(Level.DEBUG));
-    }
-
-    @Test
-    public void isErrorEnabled() {
-        assertTrue("Incorrect level", logger.isErrorEnabled());
-        assertTrue("Incorrect level", logger.isEnabled(Level.ERROR));
-    }
-
-    @Test
-    public void isFatalEnabled() {
-        assertTrue("Incorrect level", logger.isFatalEnabled());
-        assertTrue("Incorrect level", logger.isEnabled(Level.FATAL));
-    }
-
-    @Test
-    public void isInfoEnabled() {
-        assertTrue("Incorrect level", logger.isInfoEnabled());
-        assertTrue("Incorrect level", logger.isEnabled(Level.INFO));
-    }
-
-    @Test
-    public void isOffEnabled() {
-        assertTrue("Incorrect level", logger.isEnabled(Level.OFF));
-    }
-
-    @Test
-    public void isTraceEnabled() {
-        assertTrue("Incorrect level", logger.isTraceEnabled());
-        assertTrue("Incorrect level", logger.isEnabled(Level.TRACE));
-    }
-
-    @Test
-    public void isWarnEnabled() {
-        assertTrue("Incorrect level", logger.isWarnEnabled());
-        assertTrue("Incorrect level", logger.isEnabled(Level.WARN));
-    }
-
-    @Test
-    public void mdc() {
-
-        ThreadContext.put("TestYear", Integer.valueOf(2010).toString());
-        logger.debug("Debug message");
-        ThreadContext.clearMap();
-        logger.debug("Debug message");
-        assertEquals(2, results.size());
-        assertTrue("Incorrect MDC: " + results.get(0),
-            results.get(0).startsWith(" DEBUG Debug message {TestYear=2010}"));
-        assertTrue("MDC not cleared?: " + results.get(1),
-            results.get(1).startsWith(" DEBUG Debug message"));
-    }
-
-    @Test
-    public void printf() {
-        logger.printf(Level.DEBUG, "Debug message %d", 1);
-        logger.printf(Level.DEBUG, MarkerManager.getMarker("Test"), "Debug message %d", 2);
-        assertEquals(2, results.size());
-        assertThat("Incorrect message", results.get(0), startsWith(" DEBUG Debug message 1"));
-        assertThat("Incorrect message", results.get(1), startsWith("Test DEBUG Debug message 2"));
-    }
-
-    @Before
-    public void setup() {
-        results.clear();
-    }
-
-    @Test
-    public void structuredData() {
-        ThreadContext.put("loginId", "JohnDoe");
-        ThreadContext.put("ipAddress", "192.168.0.120");
-        ThreadContext.put("locale", Locale.US.getDisplayName());
-        final StructuredDataMessage msg = new StructuredDataMessage("Audit@18060", "Transfer Complete", "Transfer");
-        msg.put("ToAccount", "123456");
-        msg.put("FromAccount", "123457");
-        msg.put("Amount", "200.00");
-        logger.info(MarkerManager.getMarker("EVENT"), msg);
-        ThreadContext.clearMap();
-        assertEquals(1, results.size());
-        assertThat("Incorrect structured data: ", results.get(0), startsWith(
-                "EVENT INFO Transfer [Audit@18060 Amount=\"200.00\" FromAccount=\"123457\" ToAccount=\"123456\"] Transfer Complete"));
-    }
-
-    @Test
-    public void throwing() {
-        logger.throwing(new IllegalArgumentException("Test Exception"));
-        assertEquals(1, results.size());
-        assertThat("Incorrect Throwing",
-                results.get(0), startsWith("THROWING[ EXCEPTION ] ERROR Throwing java.lang.IllegalArgumentException: Test Exception"));
-    }
-
-
-    private class Response {
-        int status;
-        String message;
-
-        public Response(int status, String message) {
-            this.status = status;
-            this.message = message;
-        }
-
-        public int getStatus() {
-            return status;
-        }
-
-        public void setStatus(int status) {
-            this.status = status;
-        }
-
-        public String getMessage() {
-            return message;
-        }
-
-        public void setMessage(String message) {
-            this.message = message;
-        }
-    }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.endsWith;
+import static org.hamcrest.CoreMatchers.startsWith;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import org.apache.logging.log4j.message.EntryMessage;
+import org.apache.logging.log4j.message.JsonMessage;
+import org.apache.logging.log4j.message.Message;
+import org.apache.logging.log4j.message.ObjectMessage;
+import org.apache.logging.log4j.message.ParameterizedMessageFactory;
+import org.apache.logging.log4j.message.SimpleMessageFactory;
+import org.apache.logging.log4j.message.StringFormatterMessageFactory;
+import org.apache.logging.log4j.message.StructuredDataMessage;
+import org.apache.logging.log4j.util.Strings;
+import org.apache.logging.log4j.util.Supplier;
+import org.junit.Before;
+import org.junit.Test;
+/**
+ *
+ */
+public class LoggerTest {
+
+    private static class TestParameterizedMessageFactory {
+        // empty
+    }
+
+    private static class TestStringFormatterMessageFactory {
+        // empty
+    }
+
+    private final TestLogger logger = (TestLogger) LogManager.getLogger("LoggerTest");
+    private final List<String> results = logger.getEntries();
+
+    @Test
+    public void basicFlow() {
+        logger.entry();
+        logger.exit();
+        assertEquals(2, results.size());
+        assertThat("Incorrect Entry", results.get(0), equalTo("ENTER[ FLOW ] TRACE Enter"));
+        assertThat("incorrect Exit", results.get(1), equalTo("EXIT[ FLOW ] TRACE Exit"));
+
+    }
+
+    @Test
+    public void flowTracingMessage() {
+        logger.traceEntry(new JsonMessage(System.getProperties()));
+        final Response response = new Response(-1, "Generic error");
+        logger.traceExit(new JsonMessage(response),  response);
+        assertEquals(2, results.size());
+        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
+        assertThat("Missing entry data", results.get(0), containsString("\"java.runtime.name\":"));
+        assertThat("incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
+        assertThat("Missing exit data", results.get(1), containsString("\"message\":\"Generic error\""));
+    }
+
+    @Test
+    public void flowTracingString_ObjectArray1() {
+        logger.traceEntry("doFoo(a={}, b={})", 1, 2);
+        logger.traceExit("doFoo(a=1, b=2): {}", 3);
+        assertEquals(2, results.size());
+        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
+        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
+        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
+        assertThat("Missing exit data", results.get(1), containsString("doFoo(a=1, b=2): 3"));
+    }
+
+    @Test
+    public void flowTracingExitValueOnly() {
+        logger.traceEntry("doFoo(a={}, b={})", 1, 2);
+        logger.traceExit(3);
+        assertEquals(2, results.size());
+        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
+        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
+        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
+        assertThat("Missing exit data", results.get(1), containsString("3"));
+    }
+
+    @Test
+    public void flowTracingString_ObjectArray2() {
+        EntryMessage msg = logger.traceEntry("doFoo(a={}, b={})", 1, 2);
+        logger.traceExit(msg, 3);
+        assertEquals(2, results.size());
+        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
+        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
+        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
+        assertThat("Missing exit data", results.get(1), containsString("doFoo(a=1, b=2): 3"));
+    }
+
+    @Test
+    public void flowTracingVoidReturn() {
+        EntryMessage msg = logger.traceEntry("doFoo(a={}, b={})", 1, 2);
+        logger.traceExit(msg);
+        assertEquals(2, results.size());
+        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
+        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
+        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
+        assertThat("Missing exit data", results.get(1), endsWith("doFoo(a=1, b=2)"));
+    }
+
+    @Test
+    public void flowTracingNoExitArgs() {
+        logger.traceEntry();
+        logger.traceExit();
+        assertEquals(2, results.size());
+        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
+        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
+    }
+
+    @Test
+    public void flowTracingNoArgs() {
+        final EntryMessage message = logger.traceEntry();
+        logger.traceExit(message);
+        assertEquals(2, results.size());
+        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
+        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
+    }
+
+    @Test
+    public void flowTracingString_SupplierOfObjectMessages() {
+        EntryMessage msg = logger.traceEntry("doFoo(a={}, b={})", new Supplier<Message>() {
+            @Override
+            public Message get() {
+                return new ObjectMessage(1);
+            }
+        }, new Supplier<Message>() {
+            @Override
+            public Message get() {
+                return new ObjectMessage(2);
+            }
+        });
+        logger.traceExit(msg, 3);
+        assertEquals(2, results.size());
+        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
+        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
+        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
+        assertThat("Missing exit data", results.get(1), containsString("doFoo(a=1, b=2): 3"));
+    }
+
+    @Test
+    public void flowTracingString_SupplierOfStrings() {
+        EntryMessage msg = logger.traceEntry("doFoo(a={}, b={})", new Supplier<String>() {
+            @Override
+            public String get() {
+                return "1";
+            }
+        }, new Supplier<String>() {
+            @Override
+            public String get() {
+                return "2";
+            }
+        });
+        logger.traceExit(msg, 3);
+        assertEquals(2, results.size());
+        assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
+        assertThat("Missing entry data", results.get(0), containsString("doFoo(a=1, b=2)"));
+        assertThat("Incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
+        assertThat("Missing exit data", results.get(1), containsString("doFoo(a=1, b=2): 3"));
+    }
+
+    @Test
+    public void catching() {
+        try {
+            throw new NullPointerException();
+        } catch (final Exception e) {
+            logger.catching(e);
+            assertEquals(1, results.size());
+            assertThat("Incorrect Catching",
+                    results.get(0), startsWith("CATCHING[ EXCEPTION ] ERROR Catching java.lang.NullPointerException"));
+        }
+    }
+
+    @Test
+    public void debug() {
+        logger.debug("Debug message");
+        assertEquals(1, results.size());
+        assertTrue("Incorrect message", results.get(0).startsWith(" DEBUG Debug message"));
+    }
+
+    @Test
+    public void debugObject() {
+        logger.debug(new Date());
+        assertEquals(1, results.size());
+        assertTrue("Invalid length", results.get(0).length() > 7);
+    }
+
+    @Test
+    public void debugWithParms() {
+        logger.debug("Hello, {}", "World");
+        assertEquals(1, results.size());
+        assertTrue("Incorrect substitution", results.get(0).startsWith(" DEBUG Hello, World"));
+    }
+
+    @Test
+    public void debugWithParmsAndThrowable() {
+        logger.debug("Hello, {}", "World", new RuntimeException("Test Exception"));
+        assertEquals(1, results.size());
+        assertTrue("Unexpected results: " + results.get(0),
+            results.get(0).startsWith(" DEBUG Hello, World java.lang.RuntimeException: Test Exception"));
+    }
+
+    @Test
+    public void getFormatterLogger() {
+        // The TestLogger logger was already created in an instance variable for this class.
+        // The message factory is only used when the logger is created.
+        final TestLogger testLogger = (TestLogger) LogManager.getFormatterLogger();
+        final TestLogger altLogger = (TestLogger) LogManager.getFormatterLogger(getClass());
+        assertEquals(testLogger.getName(), altLogger.getName());
+        assertNotNull(testLogger);
+        assertTrue(testLogger.getMessageFactory() instanceof StringFormatterMessageFactory);
+        assertEquals(StringFormatterMessageFactory.INSTANCE, testLogger.getMessageFactory());
+        testLogger.debug("%,d", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getFormatterLogger_Class() {
+        // The TestLogger logger was already created in an instance variable for this class.
+        // The message factory is only used when the logger is created.
+        final TestLogger testLogger = (TestLogger) LogManager.getFormatterLogger(TestStringFormatterMessageFactory.class);
+        assertNotNull(testLogger);
+        assertTrue(testLogger.getMessageFactory() instanceof StringFormatterMessageFactory);
+        assertEquals(StringFormatterMessageFactory.INSTANCE, testLogger.getMessageFactory());
+        testLogger.debug("%,d", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getFormatterLogger_Object() {
+        // The TestLogger logger was already created in an instance variable for this class.
+        // The message factory is only used when the logger is created.
+        final TestLogger testLogger = (TestLogger) LogManager.getFormatterLogger(new TestStringFormatterMessageFactory());
+        assertNotNull(testLogger);
+        assertTrue(testLogger.getMessageFactory() instanceof StringFormatterMessageFactory);
+        assertEquals(StringFormatterMessageFactory.INSTANCE, testLogger.getMessageFactory());
+        testLogger.debug("%,d", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getFormatterLogger_String() {
+        final StringFormatterMessageFactory messageFactory = StringFormatterMessageFactory.INSTANCE;
+        final TestLogger testLogger = (TestLogger) LogManager.getFormatterLogger("getLogger_String_StringFormatterMessageFactory");
+        assertNotNull(testLogger);
+        assertTrue(testLogger.getMessageFactory() instanceof StringFormatterMessageFactory);
+        assertEquals(messageFactory, testLogger.getMessageFactory());
+        testLogger.debug("%,d", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getLogger_Class_ParameterizedMessageFactory() {
+        // The TestLogger logger was already created in an instance variable for this class.
+        // The message factory is only used when the logger is created.
+        final ParameterizedMessageFactory messageFactory = ParameterizedMessageFactory.INSTANCE;
+        final TestLogger testLogger = (TestLogger) LogManager.getLogger(TestParameterizedMessageFactory.class,
+                messageFactory);
+        assertNotNull(testLogger);
+        assertEquals(messageFactory, testLogger.getMessageFactory());
+        testLogger.debug("{}", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(" DEBUG " + Integer.MAX_VALUE, testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getLogger_Class_StringFormatterMessageFactory() {
+        // The TestLogger logger was already created in an instance variable for this class.
+        // The message factory is only used when the logger is created.
+        final TestLogger testLogger = (TestLogger) LogManager.getLogger(TestStringFormatterMessageFactory.class,
+                StringFormatterMessageFactory.INSTANCE);
+        assertNotNull(testLogger);
+        assertEquals(StringFormatterMessageFactory.INSTANCE, testLogger.getMessageFactory());
+        testLogger.debug("%,d", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getLogger_Object_ParameterizedMessageFactory() {
+        // The TestLogger logger was already created in an instance variable for this class.
+        // The message factory is only used when the logger is created.
+        final ParameterizedMessageFactory messageFactory =  ParameterizedMessageFactory.INSTANCE;
+        final TestLogger testLogger = (TestLogger) LogManager.getLogger(new TestParameterizedMessageFactory(),
+                messageFactory);
+        assertNotNull(testLogger);
+        assertEquals(messageFactory, testLogger.getMessageFactory());
+        testLogger.debug("{}", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(" DEBUG " + Integer.MAX_VALUE, testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getLogger_Object_StringFormatterMessageFactory() {
+        // The TestLogger logger was already created in an instance variable for this class.
+        // The message factory is only used when the logger is created.
+        final StringFormatterMessageFactory messageFactory = StringFormatterMessageFactory.INSTANCE;
+        final TestLogger testLogger = (TestLogger) LogManager.getLogger(new TestStringFormatterMessageFactory(),
+                messageFactory);
+        assertNotNull(testLogger);
+        assertEquals(messageFactory, testLogger.getMessageFactory());
+        testLogger.debug("%,d", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getLogger_String_MessageFactoryMismatch() {
+        final StringFormatterMessageFactory messageFactory = StringFormatterMessageFactory.INSTANCE;
+        final TestLogger testLogger = (TestLogger) LogManager.getLogger("getLogger_String_MessageFactoryMismatch",
+                messageFactory);
+        assertNotNull(testLogger);
+        assertEquals(messageFactory, testLogger.getMessageFactory());
+        final TestLogger testLogger2 = (TestLogger) LogManager.getLogger("getLogger_String_MessageFactoryMismatch",
+                ParameterizedMessageFactory.INSTANCE);
+        assertNotNull(testLogger2);
+        //TODO: How to test?
+        //This test context always creates new loggers, other test context impls I tried fail other tests.
+        //assertEquals(messageFactory, testLogger2.getMessageFactory());
+        testLogger.debug("%,d", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getLogger_String_ParameterizedMessageFactory() {
+        final ParameterizedMessageFactory messageFactory =  ParameterizedMessageFactory.INSTANCE;
+        final TestLogger testLogger = (TestLogger) LogManager.getLogger("getLogger_String_ParameterizedMessageFactory",
+                messageFactory);
+        assertNotNull(testLogger);
+        assertEquals(messageFactory, testLogger.getMessageFactory());
+        testLogger.debug("{}", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(" DEBUG " + Integer.MAX_VALUE, testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getLogger_String_SimpleMessageFactory() {
+        final SimpleMessageFactory messageFactory = SimpleMessageFactory.INSTANCE;
+        final TestLogger testLogger = (TestLogger) LogManager.getLogger("getLogger_String_StringFormatterMessageFactory",
+                messageFactory);
+        assertNotNull(testLogger);
+        assertEquals(messageFactory, testLogger.getMessageFactory());
+        testLogger.debug("{} %,d {foo}", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(" DEBUG {} %,d {foo}", testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getLogger_String_StringFormatterMessageFactory() {
+        final StringFormatterMessageFactory messageFactory = StringFormatterMessageFactory.INSTANCE;
+        final TestLogger testLogger = (TestLogger) LogManager.getLogger("getLogger_String_StringFormatterMessageFactory",
+                messageFactory);
+        assertNotNull(testLogger);
+        assertEquals(messageFactory, testLogger.getMessageFactory());
+        testLogger.debug("%,d", Integer.MAX_VALUE);
+        assertEquals(1, testLogger.getEntries().size());
+        assertEquals(String.format(" DEBUG %,d", Integer.MAX_VALUE), testLogger.getEntries().get(0));
+    }
+
+    @Test
+    public void getLoggerByClass() {
+        final Logger classLogger = LogManager.getLogger(LoggerTest.class);
+        assertNotNull(classLogger);
+    }
+
+    @Test
+    public void getLoggerByNullClass() {
+        // Returns a SimpleLogger
+        assertNotNull(LogManager.getLogger((Class<?>) null));
+    }
+
+    @Test
+    public void getLoggerByNullObject() {
+        // Returns a SimpleLogger
+        assertNotNull(LogManager.getLogger((Object) null));
+    }
+
+    @Test
+    public void getLoggerByNullString() {
+        // Returns a SimpleLogger
+        assertNotNull(LogManager.getLogger((String) null));
+    }
+
+    @Test
+    public void getLoggerByObject() {
+        final Logger classLogger = LogManager.getLogger(this);
+        assertNotNull(classLogger);
+        assertEquals(classLogger, LogManager.getLogger(LoggerTest.class));
+    }
+
+    @Test
+    public void getRootLogger() {
+        assertNotNull(LogManager.getRootLogger());
+        assertNotNull(LogManager.getLogger(Strings.EMPTY));
+        assertNotNull(LogManager.getLogger(LogManager.ROOT_LOGGER_NAME));
+        assertEquals(LogManager.getRootLogger(), LogManager.getLogger(Strings.EMPTY));
+        assertEquals(LogManager.getRootLogger(), LogManager.getLogger(LogManager.ROOT_LOGGER_NAME));
+    }
+
+    @Test
+    public void isAllEnabled() {
+        assertTrue("Incorrect level", logger.isEnabled(Level.ALL));
+    }
+
+    @Test
+    public void isDebugEnabled() {
+        assertTrue("Incorrect level", logger.isDebugEnabled());
+        assertTrue("Incorrect level", logger.isEnabled(Level.DEBUG));
+    }
+
+    @Test
+    public void isErrorEnabled() {
+        assertTrue("Incorrect level", logger.isErrorEnabled());
+        assertTrue("Incorrect level", logger.isEnabled(Level.ERROR));
+    }
+
+    @Test
+    public void isFatalEnabled() {
+        assertTrue("Incorrect level", logger.isFatalEnabled());
+        assertTrue("Incorrect level", logger.isEnabled(Level.FATAL));
+    }
+
+    @Test
+    public void isInfoEnabled() {
+        assertTrue("Incorrect level", logger.isInfoEnabled());
+        assertTrue("Incorrect level", logger.isEnabled(Level.INFO));
+    }
+
+    @Test
+    public void isOffEnabled() {
+        assertTrue("Incorrect level", logger.isEnabled(Level.OFF));
+    }
+
+    @Test
+    public void isTraceEnabled() {
+        assertTrue("Incorrect level", logger.isTraceEnabled());
+        assertTrue("Incorrect level", logger.isEnabled(Level.TRACE));
+    }
+
+    @Test
+    public void isWarnEnabled() {
+        assertTrue("Incorrect level", logger.isWarnEnabled());
+        assertTrue("Incorrect level", logger.isEnabled(Level.WARN));
+    }
+
+    @Test
+    public void mdc() {
+
+        ThreadContext.put("TestYear", Integer.valueOf(2010).toString());
+        logger.debug("Debug message");
+        ThreadContext.clearMap();
+        logger.debug("Debug message");
+        assertEquals(2, results.size());
+        assertTrue("Incorrect MDC: " + results.get(0),
+            results.get(0).startsWith(" DEBUG Debug message {TestYear=2010}"));
+        assertTrue("MDC not cleared?: " + results.get(1),
+            results.get(1).startsWith(" DEBUG Debug message"));
+    }
+
+    @Test
+    public void printf() {
+        logger.printf(Level.DEBUG, "Debug message %d", 1);
+        logger.printf(Level.DEBUG, MarkerManager.getMarker("Test"), "Debug message %d", 2);
+        assertEquals(2, results.size());
+        assertThat("Incorrect message", results.get(0), startsWith(" DEBUG Debug message 1"));
+        assertThat("Incorrect message", results.get(1), startsWith("Test DEBUG Debug message 2"));
+    }
+
+    @Before
+    public void setup() {
+        results.clear();
+    }
+
+    @Test
+    public void structuredData() {
+        ThreadContext.put("loginId", "JohnDoe");
+        ThreadContext.put("ipAddress", "192.168.0.120");
+        ThreadContext.put("locale", Locale.US.getDisplayName());
+        final StructuredDataMessage msg = new StructuredDataMessage("Audit@18060", "Transfer Complete", "Transfer");
+        msg.put("ToAccount", "123456");
+        msg.put("FromAccount", "123457");
+        msg.put("Amount", "200.00");
+        logger.info(MarkerManager.getMarker("EVENT"), msg);
+        ThreadContext.clearMap();
+        assertEquals(1, results.size());
+        assertThat("Incorrect structured data: ", results.get(0), startsWith(
+                "EVENT INFO Transfer [Audit@18060 Amount=\"200.00\" FromAccount=\"123457\" ToAccount=\"123456\"] Transfer Complete"));
+    }
+
+    @Test
+    public void throwing() {
+        logger.throwing(new IllegalArgumentException("Test Exception"));
+        assertEquals(1, results.size());
+        assertThat("Incorrect Throwing",
+                results.get(0), startsWith("THROWING[ EXCEPTION ] ERROR Throwing java.lang.IllegalArgumentException: Test Exception"));
+    }
+
+
+    private class Response {
+        int status;
+        String message;
+
+        public Response(int status, String message) {
+            this.status = status;
+            this.message = message;
+        }
+
+        public int getStatus() {
+            return status;
+        }
+
+        public void setStatus(int status) {
+            this.status = status;
+        }
+
+        public String getMessage() {
+            return message;
+        }
+
+        public void setMessage(String message) {
+            this.message = message;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
index dc01507..cafbb41 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
@@ -41,7 +41,6 @@ import org.apache.logging.log4j.core.config.LoggerConfig;
 import org.apache.logging.log4j.core.impl.Log4jContextFactory;
 import org.apache.logging.log4j.core.selector.ContextSelector;
 import org.apache.logging.log4j.core.util.Constants;
-import org.apache.logging.log4j.core.util.Loader;
 import org.apache.logging.log4j.spi.LoggerContextFactory;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.PropertiesUtil;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
index fd389f4..4565e21 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
@@ -21,7 +21,6 @@ import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.MultiformatMessage;
-import org.apache.logging.log4j.message.ReusableMessage;
 import org.apache.logging.log4j.util.StringBuilderFormattable;
 
 /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
index 3b9e22a..556268d 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
@@ -22,7 +22,6 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.Locale;
 
-import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.*;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/CountingNoOpAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/CountingNoOpAppender.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/CountingNoOpAppender.java
index 6140fb6..bb92bcf 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/CountingNoOpAppender.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/CountingNoOpAppender.java
@@ -16,18 +16,14 @@
  */
 package org.apache.logging.log4j.core.async.perftest;
 
-import java.io.Serializable;
 import java.util.Objects;
 
-import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.appender.AbstractAppender;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
-import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
-import org.apache.logging.log4j.core.layout.PatternLayout;
 
 /**
  * No-Operation Appender that counts events.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-core/src/test/java/org/apache/logging/log4j/core/util/CronExpressionTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/CronExpressionTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/CronExpressionTest.java
index 2e73d9c..d76ef4e 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/CronExpressionTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/CronExpressionTest.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.util;
 
 import org.junit.Test;
 
-import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-core/src/test/java/org/apache/logging/log4j/core/util/WatchManagerTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/WatchManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/WatchManagerTest.java
index 9e229fd..4108f26 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/WatchManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/WatchManagerTest.java
@@ -27,8 +27,6 @@ import java.nio.file.StandardCopyOption;
 import java.util.Queue;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.logging.log4j.core.config.ConfigurationScheduler;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java
----------------------------------------------------------------------
diff --git a/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java b/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java
index 538dc8d..f7405c2 100644
--- a/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java
+++ b/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGuiJConsolePlugin.java
@@ -22,8 +22,6 @@ import java.util.Map;
 import javax.swing.JPanel;
 import javax.swing.SwingWorker;
 
-import com.sun.tools.jconsole.JConsolePlugin;
-
 /**
  * Adapts the {@code ClientGui} to the {@code JConsolePlugin} API.
  */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/AbstractLogger.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/AbstractLogger.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/AbstractLogger.java
index 3ac215d..471e30c 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/AbstractLogger.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/AbstractLogger.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.perf.nogc;
 
-import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.message.Message;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/DemoAppender.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/DemoAppender.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/DemoAppender.java
index 7fa3d76..fd05ac3 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/DemoAppender.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/DemoAppender.java
@@ -22,7 +22,6 @@ import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.appender.AbstractAppender;
 import org.apache.logging.log4j.core.layout.ByteBufferDestination;
-import org.apache.logging.log4j.core.layout.Encoder;
 
 /**
  * Demo Appender that does not do any I/O.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessagePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessagePatternConverter.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessagePatternConverter.java
index 0ff39fd..4ecec89 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessagePatternConverter.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessagePatternConverter.java
@@ -18,10 +18,7 @@ package org.apache.logging.log4j.perf.nogc;
 
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.core.pattern.ConverterKeys;
 import org.apache.logging.log4j.core.pattern.LogEventPatternConverter;
-import org.apache.logging.log4j.core.pattern.PatternConverter;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.MultiformatMessage;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-samples/configuration/src/main/java/org/apache/logging/log4j/configuration/CustomConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/log4j-samples/configuration/src/main/java/org/apache/logging/log4j/configuration/CustomConfigurationFactory.java b/log4j-samples/configuration/src/main/java/org/apache/logging/log4j/configuration/CustomConfigurationFactory.java
index 3c59b34..7ef0d92 100644
--- a/log4j-samples/configuration/src/main/java/org/apache/logging/log4j/configuration/CustomConfigurationFactory.java
+++ b/log4j-samples/configuration/src/main/java/org/apache/logging/log4j/configuration/CustomConfigurationFactory.java
@@ -21,8 +21,6 @@ import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.config.ConfigurationSource;
 import org.apache.logging.log4j.core.config.Order;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.core.config.xml.XmlConfiguration;
-
 import java.net.URI;
 
 /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/fc918475/log4j-slf4j-impl/src/test/java/org/apache/logging/slf4j/Log4j1222Test.java
----------------------------------------------------------------------
diff --git a/log4j-slf4j-impl/src/test/java/org/apache/logging/slf4j/Log4j1222Test.java b/log4j-slf4j-impl/src/test/java/org/apache/logging/slf4j/Log4j1222Test.java
index 019660e..1e17161 100644
--- a/log4j-slf4j-impl/src/test/java/org/apache/logging/slf4j/Log4j1222Test.java
+++ b/log4j-slf4j-impl/src/test/java/org/apache/logging/slf4j/Log4j1222Test.java
@@ -17,7 +17,6 @@
 package org.apache.logging.slf4j;
 
 
-import org.apache.logging.log4j.TestLogger;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;


[18/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id and priority in PatternLayout.

Posted by rp...@apache.org.
[LOG4J2-1299] Add pattern converter for thread id and priority in
PatternLayout.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: e9917fd7856ef6c1ecdbcd9e2ca48618c7a414a5
Parents: 585beba
Author: ggregory <gg...@apache.org>
Authored: Tue Mar 1 10:46:24 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Tue Mar 1 10:46:24 2016 -0800

----------------------------------------------------------------------
 .../src/main/java/org/apache/logging/log4j/core/LogEvent.java      | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e9917fd7/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
index 422a2d1..5b68155 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
@@ -117,6 +117,7 @@ public interface LogEvent extends Serializable {
      * Gets the thread ID.
      *
      * @return thread ID.
+     * @since 2.6
      */
     long getThreadId();
 
@@ -124,6 +125,7 @@ public interface LogEvent extends Serializable {
      * Gets the thread priority.
      *
      * @return thread priority.
+     * @since 2.6
      */
     int getThreadPriority();
 


[13/50] [abbrv] logging-log4j2 git commit: Add TODO note.

Posted by rp...@apache.org.
Add TODO note.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 82d272206f30e9ea9530411cb434da766c2ec387
Parents: 7da2fa1
Author: ggregory <gg...@apache.org>
Authored: Tue Mar 1 07:48:47 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Tue Mar 1 07:48:47 2016 -0800

----------------------------------------------------------------------
 .../apache/logging/log4j/core/net/server/ThreadNameFilter.java    | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/82d27220/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadNameFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadNameFilter.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadNameFilter.java
index b40eaa5..e5e176d 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadNameFilter.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/ThreadNameFilter.java
@@ -21,6 +21,9 @@ import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.filter.AbstractFilter;
 
+/**
+ * TODO Should use thread name cache?
+ */
 public class ThreadNameFilter extends AbstractFilter {
 
     private static final long serialVersionUID = 1L;


[02/50] [abbrv] logging-log4j2 git commit: Revert "[LOG4J2-1300] Make Advertiser implementations Serializable."

Posted by rp...@apache.org.
Revert "[LOG4J2-1300] Make Advertiser implementations Serializable."

This reverts commit ce7d5d230c98a815d1173ae63e19a6a064c4cafc.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 0c00057a13091062df12d6c965ad1801eef3a45c
Parents: ea85196
Author: Matt Sicker <bo...@gmail.com>
Authored: Mon Feb 29 19:09:29 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Mon Feb 29 19:14:36 2016 -0600

----------------------------------------------------------------------
 .../apache/logging/log4j/core/net/MulticastDnsAdvertiser.java    | 4 +---
 .../org/apache/logging/log4j/core/config/InMemoryAdvertiser.java | 4 +---
 2 files changed, 2 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0c00057a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/MulticastDnsAdvertiser.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/MulticastDnsAdvertiser.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/MulticastDnsAdvertiser.java
index 40d1956..479d25f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/MulticastDnsAdvertiser.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/MulticastDnsAdvertiser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.net;
 
-import java.io.Serializable;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.HashMap;
@@ -37,8 +36,7 @@ import org.apache.logging.log4j.status.StatusLogger;
  *
  */
 @Plugin(name = "multicastdns", category = "Core", elementType = "advertiser", printObject = false)
-public class MulticastDnsAdvertiser implements Advertiser, Serializable {
-    private static final long serialVersionUID = 1L;
+public class MulticastDnsAdvertiser implements Advertiser {
     /**
      * Status logger.
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0c00057a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/InMemoryAdvertiser.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/InMemoryAdvertiser.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/InMemoryAdvertiser.java
index 892c87c..81d9676 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/InMemoryAdvertiser.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/InMemoryAdvertiser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.config;
 
-import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -24,8 +23,7 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.net.Advertiser;
 
 @Plugin(name = "memory", category = "Core", elementType = "advertiser", printObject = false)
-public class InMemoryAdvertiser implements Advertiser, Serializable {
-    private static final long serialVersionUID = 1L;
+public class InMemoryAdvertiser implements Advertiser {
     private static Map<Object, Map<String, String>> properties = new HashMap<>();
 
     public static Map<Object, Map<String, String>> getAdvertisedEntries()


[37/50] [abbrv] logging-log4j2 git commit: Merge branch 'LOG4J2-1227' of https://github.com/olivierlemasle/logging-log4j2

Posted by rp...@apache.org.
Merge branch 'LOG4J2-1227' of https://github.com/olivierlemasle/logging-log4j2


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 6362a382cb808748459d22b2dc89b431a6345be4
Parents: 60d1ccd 33ee4bf
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 21:05:27 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 21:05:27 2016 -0600

----------------------------------------------------------------------
 .../logging/log4j/core/lookup/MapLookup.java    |  2 +-
 .../log4j/core/lookup/MapLookupTest.java        | 25 ++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[48/50] [abbrv] logging-log4j2 git commit: Fix compiler warning by using a better ivar name.

Posted by rp...@apache.org.
Fix compiler warning by using a better ivar name.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 463c9ea498a4824fb49dfa261a70892c1e9ea282
Parents: 370d965
Author: ggregory <gg...@apache.org>
Authored: Thu Mar 3 23:09:38 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Thu Mar 3 23:09:38 2016 -0800

----------------------------------------------------------------------
 .../java/org/apache/logging/log4j/core/osgi/Activator.java     | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/463c9ea4/log4j-core/src/main/java/org/apache/logging/log4j/core/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/osgi/Activator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/osgi/Activator.java
index be70b37..468df53 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/osgi/Activator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/osgi/Activator.java
@@ -39,7 +39,7 @@ public final class Activator implements BundleActivator, SynchronousBundleListen
 
     private static final Logger LOGGER = StatusLogger.getLogger();
 
-    private final AtomicReference<BundleContext> context = new AtomicReference<>();
+    private final AtomicReference<BundleContext> contextRef = new AtomicReference<>();
 
     @Override
     public void start(final BundleContext context) throws Exception {
@@ -47,7 +47,7 @@ public final class Activator implements BundleActivator, SynchronousBundleListen
         if (PropertiesUtil.getProperties().getStringProperty(Constants.LOG4J_CONTEXT_SELECTOR) == null) {
             System.setProperty(Constants.LOG4J_CONTEXT_SELECTOR, BundleContextSelector.class.getName());
         }
-        if (this.context.compareAndSet(null, context)) {
+        if (this.contextRef.compareAndSet(null, context)) {
             context.addBundleListener(this);
             // done after the BundleListener as to not miss any new bundle installs in the interim
             scanInstalledBundlesForPlugins(context);
@@ -79,7 +79,7 @@ public final class Activator implements BundleActivator, SynchronousBundleListen
 
     @Override
     public void stop(final BundleContext context) throws Exception {
-        this.context.compareAndSet(context, null);
+        this.contextRef.compareAndSet(context, null);
         LogManager.shutdown();
     }
 


[20/50] [abbrv] logging-log4j2 git commit: LOG4J2-1299 - Add %T converter key for thread id converter.

Posted by rp...@apache.org.
LOG4J2-1299 - Add %T converter key for thread id converter.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: b2ec3055dce700707a60e5fcac84b58dc3218485
Parents: 0d1df69
Author: Matt Sicker <bo...@gmail.com>
Authored: Tue Mar 1 14:21:52 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Tue Mar 1 14:21:52 2016 -0600

----------------------------------------------------------------------
 .../logging/log4j/core/pattern/ThreadIdPatternConverter.java       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b2ec3055/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverter.java
index 844d47d..4acfd61 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThreadIdPatternConverter.java
@@ -25,7 +25,7 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
  * @since 2.6
  */
 @Plugin(name = "ThreadIdPatternConverter", category = PatternConverter.CATEGORY)
-@ConverterKeys({ "tid", "threadId" })
+@ConverterKeys({ "T", "tid", "threadId" })
 public final class ThreadIdPatternConverter extends LogEventPatternConverter {
     /**
      * Singleton.


[15/50] [abbrv] logging-log4j2 git commit: Remove obsolete test for LOG4J2-1300.

Posted by rp...@apache.org.
Remove obsolete test for LOG4J2-1300.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 1bd8a513959bc7df70d81002098b584b1e7ea87b
Parents: 0434a27
Author: Matt Sicker <bo...@gmail.com>
Authored: Tue Mar 1 10:04:58 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Tue Mar 1 10:05:11 2016 -0600

----------------------------------------------------------------------
 .../util/KeyValuePairSerializationTest.java     | 39 --------------------
 1 file changed, 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1bd8a513/log4j-core/src/test/java/org/apache/logging/log4j/core/util/KeyValuePairSerializationTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/KeyValuePairSerializationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/KeyValuePairSerializationTest.java
deleted file mode 100644
index 0893aed..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/KeyValuePairSerializationTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.util;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collection;
-
-import org.apache.logging.log4j.AbstractSerializationTest;
-import org.junit.runners.Parameterized.Parameters;
-
-public class KeyValuePairSerializationTest extends AbstractSerializationTest {
-
-    @Parameters
-    public static Collection<Object[]> data() {
-        return Arrays.asList(new Object[][] {
-                { new KeyValuePair("testuser", "DEBUG") },
-                { new KeyValuePair("JohnDoe", "warn") } });
-    }
-
-    public KeyValuePairSerializationTest(final Serializable serializable) {
-        super(serializable);
-    }
-
-}


[27/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id and priority in PatternLayout. Fix names.

Posted by rp...@apache.org.
[LOG4J2-1299] Add pattern converter for thread id and priority in
PatternLayout. Fix names.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 6d9928e574c5eb2aed005bdf89ab3b477b704919
Parents: 8142c3e
Author: ggregory <gg...@apache.org>
Authored: Wed Mar 2 00:36:35 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Wed Mar 2 00:36:35 2016 -0800

----------------------------------------------------------------------
 log4j-core/src/main/resources/Log4j-events.dtd | 2 +-
 log4j-core/src/main/resources/Log4j-events.xsd | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6d9928e5/log4j-core/src/main/resources/Log4j-events.dtd
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/resources/Log4j-events.dtd b/log4j-core/src/main/resources/Log4j-events.dtd
index 47fecdb..92bff1c 100644
--- a/log4j-core/src/main/resources/Log4j-events.dtd
+++ b/log4j-core/src/main/resources/Log4j-events.dtd
@@ -49,7 +49,7 @@
 	level (OFF | FATAL | ERROR | WARN | INFO | DEBUG | TRACE | ALL) #REQUIRED
     threadId CDATA #REQUIRED
     thread CDATA #REQUIRED
-    threadProperty CDATA #REQUIRED
+    threadPriority CDATA #REQUIRED
 >
 <!ELEMENT %log4j..Message; ANY>
 <!ELEMENT %log4j..NDC; ANY>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6d9928e5/log4j-core/src/main/resources/Log4j-events.xsd
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/resources/Log4j-events.xsd b/log4j-core/src/main/resources/Log4j-events.xsd
index 875df91..529e21a 100644
--- a/log4j-core/src/main/resources/Log4j-events.xsd
+++ b/log4j-core/src/main/resources/Log4j-events.xsd
@@ -60,7 +60,7 @@
                         <xs:attribute name="level" type="log4j:LevelEnum" use="required"/>
                         <xs:attribute name="threadId" type="xs:long" use="required"/>
                         <xs:attribute name="thread" type="xs:string" use="required"/>
-                        <xs:attribute name="threadProperty" type="xs:integer" use="required"/>
+                        <xs:attribute name="threadPriority" type="xs:integer" use="required"/>
                     </xs:complexType>
                 </xs:element>
             </xs:sequence>


[39/50] [abbrv] logging-log4j2 git commit: Remove obsolete test due to LOG4J2-1262.

Posted by rp...@apache.org.
Remove obsolete test due to LOG4J2-1262.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: aaf734c722fd30ce43d6d6844631ab4887c41f17
Parents: a57fc35
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 21:12:09 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 21:12:09 2016 -0600

----------------------------------------------------------------------
 .../log4j/web/Log4jServletContextListenerTest.java       | 11 -----------
 1 file changed, 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/aaf734c7/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContextListenerTest.java
----------------------------------------------------------------------
diff --git a/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContextListenerTest.java b/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContextListenerTest.java
index 068f93d..a1d90ff 100644
--- a/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContextListenerTest.java
+++ b/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContextListenerTest.java
@@ -96,15 +96,4 @@ public class Log4jServletContextListenerTest {
         }
     }
 
-    @Test
-    public void testDestroy() {
-        replay(this.event, this.servletContext, this.initializer);
-
-        try {
-            this.listener.contextDestroyed(this.event);
-            fail("Expected an IllegalStateException.");
-        } catch (final IllegalStateException ignore) {
-
-        }
-    }
 }


[26/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id and priority in PatternLayout. Remove thread ID and thread priority caches, they are not needed since these items are accessed as plain ivars through getters.

Posted by rp...@apache.org.
[LOG4J2-1299] Add pattern converter for thread id and priority in
PatternLayout. Remove thread ID and thread priority caches, they are not
needed since these items are accessed as plain ivars through getters.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 8142c3e04b82763a3ecb7915ca1bbf4d0a52c6c4
Parents: 4cff6dd
Author: ggregory <gg...@apache.org>
Authored: Tue Mar 1 20:58:04 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Tue Mar 1 20:58:04 2016 -0800

----------------------------------------------------------------------
 .../logging/log4j/core/async/AsyncLogger.java   | 16 ++++-----
 .../core/async/ThreadNameCachingStrategy.java   | 38 ++------------------
 2 files changed, 10 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8142c3e0/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
index d7ffb3c..1a060d2 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
@@ -235,6 +235,7 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf
 
         // Implementation note: this method is tuned for performance. MODIFY WITH CARE!
 
+        final Thread currentThread = Thread.currentThread();
         translator.setValuesPart2(
                 // config properties are taken care of in the EventHandler thread
                 // in the AsyncLogger#actualAsyncLog method
@@ -245,15 +246,15 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf
                 // needs shallow copy to be fast (LOG4J2-154)
                 ThreadContext.getImmutableStack(), //
 
-                THREAD_NAME_CACHING_STRATEGY.getThreadId(), //
+                currentThread.getId(), //
 
                 // Thread.currentThread().getName(), //
                 THREAD_NAME_CACHING_STRATEGY.getThreadName(),
 
-                THREAD_NAME_CACHING_STRATEGY.getThreadPriority(), //
+                currentThread.getPriority(), //
                 // location (expensive to calculate)
-                calcLocationIfRequested(fqcn)
-, eventTimeMillis(message), nanoClock.nanoTime() //
+                calcLocationIfRequested(fqcn), 
+                eventTimeMillis(message), nanoClock.nanoTime() //
                 );
     }
 
@@ -316,12 +317,11 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf
         // needs shallow copy to be fast (LOG4J2-154)
         final ContextStack contextStack = ThreadContext.getImmutableStack();
 
-        final Long threadId = THREAD_NAME_CACHING_STRATEGY.getThreadId();
+        final Thread currentThread = Thread.currentThread();
         final String threadName = THREAD_NAME_CACHING_STRATEGY.getThreadName();
-        final Integer threadPriority = THREAD_NAME_CACHING_STRATEGY.getThreadPriority();
-
         event.setValues(asyncLogger, asyncLogger.getName(), marker, fqcn, level, message, thrown, contextMap,
-                contextStack, threadId, threadName, threadPriority, location, eventTimeMillis(message), nanoClock.nanoTime());
+                contextStack, currentThread.getId(), threadName, currentThread.getPriority(), location,
+                eventTimeMillis(message), nanoClock.nanoTime());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8142c3e0/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
index 0de95a8..f82f71c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
@@ -26,16 +26,6 @@ import org.apache.logging.log4j.util.PropertiesUtil;
 enum ThreadNameCachingStrategy { // LOG4J2-467
     CACHED {
         @Override
-        public long getThreadId() {
-            Long result = THREADLOCAL_ID.get();
-            if (result == null) {
-                result = Thread.currentThread().getId();
-                THREADLOCAL_ID.set(result);
-            }
-            return result;
-        }
-
-        @Override
         public String getThreadName() {
             String result = THREADLOCAL_NAME.get();
             if (result == null) {
@@ -44,42 +34,18 @@ enum ThreadNameCachingStrategy { // LOG4J2-467
             }
             return result;
         }
-
-        @Override
-        public int getThreadPriority() {
-            Integer result = THREADLOCAL_PRIORITY.get();
-            if (result == null) {
-                result = Thread.currentThread().getPriority();
-                THREADLOCAL_PRIORITY.set(result);
-            }
-            return result;
-        }
     },
     UNCACHED {
         @Override
-        public long getThreadId() {
-            return Thread.currentThread().getId();
-        }
-
-        @Override
         public String getThreadName() {
             return Thread.currentThread().getName();
         }
-
-        @Override
-        public int getThreadPriority() {
-            return Thread.currentThread().getPriority();
-        }
     };
-    
+
     private static final StatusLogger LOGGER = StatusLogger.getLogger();
-    private static final ThreadLocal<Long> THREADLOCAL_ID = new ThreadLocal<>();
     private static final ThreadLocal<String> THREADLOCAL_NAME = new ThreadLocal<>();
-    private static final ThreadLocal<Integer> THREADLOCAL_PRIORITY = new ThreadLocal<>();
-    
-    abstract long getThreadId();
+
     abstract String getThreadName();
-    abstract int getThreadPriority();
 
     static ThreadNameCachingStrategy create() {
         final String name = PropertiesUtil.getProperties().getStringProperty("AsyncLogger.ThreadNameStrategy",


[31/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1304] Update Jackson from 2.7.0 to 2.7.2.

Posted by rp...@apache.org.
[LOG4J2-1304] Update Jackson from 2.7.0 to 2.7.2.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: e689143e7113799899232c23c6c2d1c8336749ee
Parents: e4eded2
Author: ggregory <gg...@apache.org>
Authored: Wed Mar 2 01:26:12 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Wed Mar 2 01:26:12 2016 -0800

----------------------------------------------------------------------
 pom.xml                 | 2 +-
 src/changes/changes.xml | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e689143e/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 188f1d6..c5eb74e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -190,7 +190,7 @@
     <slf4jVersion>1.7.13</slf4jVersion>
     <logbackVersion>1.1.3</logbackVersion>
     <jackson1Version>1.9.13</jackson1Version>
-    <jackson2Version>2.7.0</jackson2Version>
+    <jackson2Version>2.7.2</jackson2Version>
     <springVersion>3.2.13.RELEASE</springVersion>
     <flumeVersion>1.6.0</flumeVersion>
     <disruptorVersion>3.3.4</disruptorVersion>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e689143e/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 42c4c1b..48e5319 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -136,6 +136,9 @@
       <action issue="LOG4J2-1276" dev="ggregory" type="fix" due-to="Ludovic HOCHET">
         LoggerMessageSupplierTest and LoggerSupplierTest are Locale sensitive.
       </action>
+      <action issue="LOG4J2-1304" dev="ggregory" type="update">
+        Update Jackson from 2.7.0 to 2.7.2.
+      </action>
       <action issue="LOG4J2-1253" dev="ggregory" type="update">
         Update LMAX Disruptor from 3.3.2 to 3.3.4.
       </action>


[07/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id in PatternLayout. Add missing unit test on existing thread name converter.

Posted by rp...@apache.org.
[LOG4J2-1299] Add pattern converter for thread id in PatternLayout. Add
missing unit test on existing thread name converter.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 848ed0349ed6d37ee34990f5633cb33b89b0d2c2
Parents: 5c68195
Author: ggregory <gg...@apache.org>
Authored: Mon Feb 29 22:55:47 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Mon Feb 29 22:55:47 2016 -0800

----------------------------------------------------------------------
 .../pattern/ThreadNamePatternConverterTest.java | 39 ++++++++++++++++++++
 1 file changed, 39 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/848ed034/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
new file mode 100644
index 0000000..6b5dfc6
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThreadNamePatternConverterTest.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.pattern;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ *
+ */
+public class ThreadNamePatternConverterTest {
+
+    @Test
+    public void testConverterAppendsLogEventNanoTimeToStringBuilder() {
+        final LogEvent event = Log4jLogEvent.newBuilder() //
+                .setThreadName("Hello-1").build();
+        final StringBuilder sb = new StringBuilder();
+        final ThreadPatternConverter converter = ThreadPatternConverter.newInstance(null);
+        converter.format(event, sb);
+        assertEquals("Hello-1", sb.toString());
+    }
+}


[34/50] [abbrv] logging-log4j2 git commit: LOG4J2-1275 - Fix RollingAppenderNoUnconditionalDeleteTest repeat test runs from failing

Posted by rp...@apache.org.
LOG4J2-1275 - Fix RollingAppenderNoUnconditionalDeleteTest repeat test runs from failing


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: b1a09ce32c975bc0af53b6b9025894986816c9b7
Parents: ba61057
Author: Matt Sicker <bo...@gmail.com>
Authored: Wed Mar 2 20:14:27 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Wed Mar 2 20:14:27 2016 -0600

----------------------------------------------------------------------
 ...ollingAppenderNoUnconditionalDeleteTest.java | 22 ++++++++++++--------
 src/changes/changes.xml                         |  3 +++
 2 files changed, 16 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b1a09ce3/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderNoUnconditionalDeleteTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderNoUnconditionalDeleteTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderNoUnconditionalDeleteTest.java
index a0379d7..f25a9e7 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderNoUnconditionalDeleteTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderNoUnconditionalDeleteTest.java
@@ -25,7 +25,6 @@ import java.util.List;
 
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -60,6 +59,8 @@ public class RollingAppenderNoUnconditionalDeleteTest {
     public RollingAppenderNoUnconditionalDeleteTest(final String configFile, final String dir) {
         this.directory = new File(dir);
         this.init = new LoggerContextRule(configFile);
+        deleteDir();
+        deleteDirParent();
     }
 
     @Before
@@ -67,11 +68,6 @@ public class RollingAppenderNoUnconditionalDeleteTest {
         this.logger = this.init.getLogger();
     }
 
-    @After
-    public void tearDown() throws Exception {
-        deleteDir();
-    }
-
     @Test
     public void testAppender() throws Exception {
         final int LINECOUNT = 18; // config has max="100"
@@ -93,12 +89,20 @@ public class RollingAppenderNoUnconditionalDeleteTest {
     }
 
     private void deleteDir() {
-        if (directory.exists()) {
-            final File[] files = directory.listFiles();
+        deleteDir(directory);
+    }
+
+    private void deleteDirParent() {
+        deleteDir(directory.getParentFile());
+    }
+
+    private void deleteDir(File dir) {
+        if (dir.exists()) {
+            final File[] files = dir.listFiles();
             for (final File file : files) {
                 file.delete();
             }
-            directory.delete();
+            dir.delete();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b1a09ce3/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 2dceed8..eaf24b5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -175,6 +175,9 @@
       <action issue="LOG4J2-1303" dev="mattsicker" type="add">
         Add documentation links to runtime dependencies in each component intro page.
       </action>
+      <action issue="LOG4J2-1275" dev="mattsicker" type="fix" due-to="Ludovic Hochet">
+        Fix RollingAppenderNoUnconditionalDeleteTest repeat test runs from failing.
+      </action>
     </release>
     <release version="2.5" date="2015-12-06" description="GA Release 2.5">
       <action issue="LOG4J2-324" dev="rpopma" type="fix">


[25/50] [abbrv] logging-log4j2 git commit: [LOG4J2-1299] Add pattern converter for thread id and priority in PatternLayout.

Posted by rp...@apache.org.
[LOG4J2-1299] Add pattern converter for thread id and priority in
PatternLayout.

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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 4cff6dd460f302cef48811d300b1f5ddf3cd390d
Parents: 9c9bc95
Author: ggregory <gg...@apache.org>
Authored: Tue Mar 1 16:57:37 2016 -0800
Committer: ggregory <gg...@apache.org>
Committed: Tue Mar 1 16:57:37 2016 -0800

----------------------------------------------------------------------
 log4j-core/src/main/resources/Log4j-events.dtd | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4cff6dd4/log4j-core/src/main/resources/Log4j-events.dtd
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/resources/Log4j-events.dtd b/log4j-core/src/main/resources/Log4j-events.dtd
index d6b34c8..47fecdb 100644
--- a/log4j-core/src/main/resources/Log4j-events.dtd
+++ b/log4j-core/src/main/resources/Log4j-events.dtd
@@ -47,7 +47,9 @@
 	logger CDATA #REQUIRED
 	timestamp NMTOKEN #REQUIRED
 	level (OFF | FATAL | ERROR | WARN | INFO | DEBUG | TRACE | ALL) #REQUIRED
-	thread CDATA #REQUIRED
+    threadId CDATA #REQUIRED
+    thread CDATA #REQUIRED
+    threadProperty CDATA #REQUIRED
 >
 <!ELEMENT %log4j..Message; ANY>
 <!ELEMENT %log4j..NDC; ANY>


[22/50] [abbrv] logging-log4j2 git commit: Remove unused import.

Posted by rp...@apache.org.
Remove unused import.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: c83366edb302cc076e17e135e92361a7b302997f
Parents: af02a02
Author: Matt Sicker <bo...@gmail.com>
Authored: Tue Mar 1 16:28:57 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Tue Mar 1 16:28:57 2016 -0600

----------------------------------------------------------------------
 .../apache/logging/log4j/core/async/perftest/SimplePerfTest.java    | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c83366ed/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/SimplePerfTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/SimplePerfTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/SimplePerfTest.java
index a35b9e9..d9d460b 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/SimplePerfTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/SimplePerfTest.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core.async.perftest;
 
 import java.util.concurrent.TimeUnit;
 
-import org.apache.kafka.common.metrics.stats.Count;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.async.AsyncLogger;


[47/50] [abbrv] logging-log4j2 git commit: Merge branch 'fixUnitTest' of https://github.com/olivierlemasle/logging-log4j2

Posted by rp...@apache.org.
Merge branch 'fixUnitTest' of https://github.com/olivierlemasle/logging-log4j2

This closes #26


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 370d965fab1577086bee7b73dfb5ea9f6f6c801b
Parents: 406158c 51a81f9
Author: Matt Sicker <bo...@gmail.com>
Authored: Thu Mar 3 11:23:06 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Thu Mar 3 11:23:43 2016 -0600

----------------------------------------------------------------------
 .../java/org/apache/logging/log4j/core/lookup/MapLookupTest.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------



[04/50] [abbrv] logging-log4j2 git commit: Revert "Make filters all properly serializable."

Posted by rp...@apache.org.
Revert "Make filters all properly serializable."

This reverts commit 06a28d523b6d33bccbf90edffcb2f2a450b4f476.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 8c14ca8f35686e1c509b4fb9aaccf31d2c80c423
Parents: 67069c1
Author: Matt Sicker <bo...@gmail.com>
Authored: Mon Feb 29 19:10:17 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Mon Feb 29 19:14:36 2016 -0600

----------------------------------------------------------------------
 .../java/org/apache/logging/log4j/core/filter/BurstFilter.java  | 5 +----
 .../org/apache/logging/log4j/core/script/AbstractScript.java    | 5 +----
 .../main/java/org/apache/logging/log4j/core/script/Script.java  | 1 -
 .../java/org/apache/logging/log4j/core/script/ScriptFile.java   | 1 -
 .../java/org/apache/logging/log4j/core/script/ScriptRef.java    | 1 -
 5 files changed, 2 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8c14ca8f/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java
index 3b24ca6..9cc107b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java
@@ -17,7 +17,6 @@
 
 package org.apache.logging.log4j.core.filter;
 
-import java.io.Serializable;
 import java.util.Queue;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.DelayQueue;
@@ -172,9 +171,7 @@ public final class BurstFilter extends AbstractFilter {
      * 
      * Consider this class private, package visibility for testing.
      */
-    private static class LogDelay implements Delayed, Serializable {
-
-        private static final long serialVersionUID = 1L;
+    private static class LogDelay implements Delayed {
 
         LogDelay(final long expireTime) {
             this.expireTime = expireTime;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8c14ca8f/log4j-core/src/main/java/org/apache/logging/log4j/core/script/AbstractScript.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/AbstractScript.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/AbstractScript.java
index fb0bc39..9e331d6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/AbstractScript.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/AbstractScript.java
@@ -16,14 +16,11 @@
  */
 package org.apache.logging.log4j.core.script;
 
-import java.io.Serializable;
-
 /**
  * Container for the language and body of a script.
  */
-public abstract class AbstractScript implements Serializable {
+public abstract class AbstractScript {
 
-    private static final long serialVersionUID = 1L;
     protected static final String DEFAULT_LANGUAGE = "JavaScript";
     private final String language;
     private final String scriptText;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8c14ca8f/log4j-core/src/main/java/org/apache/logging/log4j/core/script/Script.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/Script.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/Script.java
index fa0842f..3f0c1da 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/Script.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/Script.java
@@ -30,7 +30,6 @@ import org.apache.logging.log4j.status.StatusLogger;
 @Plugin(name = "Script", category = Node.CATEGORY, printObject = true)
 public class Script extends AbstractScript {
 
-    private static final long serialVersionUID = 1L;
     private static final Logger logger = StatusLogger.getLogger();
 
     public Script(String name, String language, String scriptText) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8c14ca8f/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
index b180032..f2fe085 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
@@ -43,7 +43,6 @@ import org.apache.logging.log4j.status.StatusLogger;
 @Plugin(name = "ScriptFile", category = Node.CATEGORY, printObject = true)
 public class ScriptFile extends AbstractScript {
 
-    private static final long serialVersionUID = 1L;
     private static final Logger LOGGER = StatusLogger.getLogger();
     private final Path filePath;
     private final boolean isWatched;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8c14ca8f/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptRef.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptRef.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptRef.java
index 8507621..0ace830 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptRef.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptRef.java
@@ -31,7 +31,6 @@ import org.apache.logging.log4j.status.StatusLogger;
 @Plugin(name = "ScriptRef", category = Node.CATEGORY, printObject = true)
 public class ScriptRef extends AbstractScript {
 
-    private static final long serialVersionUID = 1L;
     private static final Logger logger = StatusLogger.getLogger();
     private final ScriptManager scriptManager;