You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by mi...@apache.org on 2016/06/14 07:55:19 UTC

[01/19] logging-log4j2 git commit: FastConsoleAppender

Repository: logging-log4j2
Updated Branches:
  refs/heads/master 86095e9f2 -> 24bfc3e86


FastConsoleAppender


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

Branch: refs/heads/master
Commit: 06c55468948efdce95a591801d5f9e2ffdb69dd4
Parents: e012269
Author: Mikael St�ldal <mi...@magine.com>
Authored: Thu May 26 17:12:33 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Thu May 26 17:12:33 2016 +0200

----------------------------------------------------------------------
 .../core/appender/FastConsoleAppender.java      | 227 +++++++++++++++++++
 .../jmh/Log4j2AppenderComparisonBenchmark.java  |  18 ++
 .../resources/log4j2-appenderComparison.xml     |   6 +
 3 files changed, 251 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/06c55468/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FastConsoleAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FastConsoleAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FastConsoleAppender.java
new file mode 100644
index 0000000..a7cd905
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FastConsoleAppender.java
@@ -0,0 +1,227 @@
+/*
+ * 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.appender;
+
+import java.io.FileDescriptor;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.io.Serializable;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.Layout;
+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.PluginBuilderAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
+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.CloseShieldOutputStream;
+
+/**
+ * Appends log events to <code>System.out</code> or <code>System.err</code> using a layout specified by the user. The
+ * default target is <code>System.out</code>.
+ */
+@Plugin(name = "FastConsole", category = "Core", elementType = "appender", printObject = true)
+public final class FastConsoleAppender extends AbstractOutputStreamAppender<OutputStreamManager> {
+
+    private static ConsoleManagerFactory factory = new ConsoleManagerFactory();
+    private static final Target DEFAULT_TARGET = Target.SYSTEM_OUT;
+    private static final AtomicInteger COUNT = new AtomicInteger();
+
+    private final Target target;
+
+    /**
+     * Enumeration of console destinations.
+     */
+    public enum Target {
+        /** Standard output. */
+        SYSTEM_OUT,
+        /** Standard error output. */
+        SYSTEM_ERR
+    }
+
+    private FastConsoleAppender(final String name, final Layout<? extends Serializable> layout, final Filter filter,
+                                final OutputStreamManager manager, final boolean ignoreExceptions, Target target) {
+        super(name, layout, filter, ignoreExceptions, true, manager);
+        this.target = target;
+    }
+
+    /**
+     * Creates a Console Appender.
+     *
+     * @param layout The layout to use (required).
+     * @param filter The Filter or null.
+     * @param target The target (SYSTEM_OUT or SYSTEM_ERR). The default is SYSTEM_OUT.
+     * @param name The name of the Appender (required).
+     * @param ignoreExceptions If {@code "true"} (default) exceptions encountered when appending events are logged; otherwise they
+     *            are propagated to the caller.
+     * @return The ConsoleAppender.
+     */
+    @PluginFactory
+    public static FastConsoleAppender createAppender(
+            // @formatter:off
+            @PluginElement("Layout") Layout<? extends Serializable> layout,
+            @PluginElement("Filter") final Filter filter,
+            @PluginAttribute(value = "target") Target target,
+            @PluginAttribute("name") final String name,
+            @PluginAttribute(value = "ignoreExceptions", defaultBoolean = true) final boolean ignoreExceptions) {
+            // @formatter:on
+        if (name == null) {
+            LOGGER.error("No name provided for ConsoleAppender");
+            return null;
+        }
+        if (layout == null) {
+            layout = PatternLayout.createDefaultLayout();
+        }
+        target = target == null ? Target.SYSTEM_OUT : target;
+        return new FastConsoleAppender(name, layout, filter, getManager(target, layout), ignoreExceptions, target);
+    }
+
+    public static FastConsoleAppender createDefaultAppenderForLayout(final Layout<? extends Serializable> layout) {
+        // this method cannot use the builder class without introducing an infinite loop due to DefaultConfiguration
+        return new FastConsoleAppender("DefaultConsole-" + COUNT.incrementAndGet(), layout, null,
+                getDefaultManager(DEFAULT_TARGET, layout), true, DEFAULT_TARGET);
+    }
+
+    @PluginBuilderFactory
+    public static Builder newBuilder() {
+        return new Builder();
+    }
+
+    /**
+     * Builds ConsoleAppender instances.
+     */
+    public static class Builder implements org.apache.logging.log4j.core.util.Builder<FastConsoleAppender> {
+
+        @PluginElement("Layout")
+        @Required
+        private Layout<? extends Serializable> layout = PatternLayout.createDefaultLayout();
+
+        @PluginElement("Filter")
+        private Filter filter;
+
+        @PluginBuilderAttribute
+        @Required
+        private Target target = DEFAULT_TARGET;
+
+        @PluginBuilderAttribute
+        @Required
+        private String name;
+
+        @PluginBuilderAttribute
+        private boolean ignoreExceptions = true;
+
+        public Builder setLayout(final Layout<? extends Serializable> aLayout) {
+            this.layout = aLayout;
+            return this;
+        }
+
+        public Builder setFilter(final Filter aFilter) {
+            this.filter = aFilter;
+            return this;
+        }
+
+        public Builder setTarget(final Target aTarget) {
+            this.target = aTarget;
+            return this;
+        }
+
+        public Builder setName(final String aName) {
+            this.name = aName;
+            return this;
+        }
+
+        public Builder setIgnoreExceptions(final boolean shouldIgnoreExceptions) {
+            this.ignoreExceptions = shouldIgnoreExceptions;
+            return this;
+        }
+
+        @Override
+        public FastConsoleAppender build() {
+            return new FastConsoleAppender(name, layout, filter, getManager(target, layout), ignoreExceptions, target);
+        }
+    }
+
+    private static OutputStreamManager getDefaultManager(final Target target, final Layout<? extends Serializable> layout) {
+        final OutputStream os = getOutputStream(target);
+
+        // LOG4J2-1176 DefaultConfiguration should not share OutputStreamManager instances to avoid memory leaks.
+        final String managerName = target.name() + '-' + COUNT.get();
+        return OutputStreamManager.getManager(managerName, new FactoryData(os, managerName, layout), factory);
+    }
+
+    private static OutputStreamManager getManager(final Target target, final Layout<? extends Serializable> layout) {
+        final OutputStream os = getOutputStream(target);
+        final String managerName = target.name();
+        return OutputStreamManager.getManager(managerName, new FactoryData(os, managerName, layout), factory);
+    }
+
+    private static OutputStream getOutputStream(final Target target) {
+        OutputStream outputStream = target == Target.SYSTEM_OUT
+            ? new FileOutputStream(FileDescriptor.out)
+            : new FileOutputStream(FileDescriptor.err);
+        return new CloseShieldOutputStream(outputStream);
+    }
+
+    /**
+     * Data to pass to factory method.
+     */
+    private static class FactoryData {
+        private final OutputStream os;
+        private final String name;
+        private final Layout<? extends Serializable> layout;
+
+        /**
+         * Constructor.
+         *
+         * @param os The OutputStream.
+         * @param type The name of the target.
+         * @param layout A Serializable layout
+         */
+        public FactoryData(final OutputStream os, final String type, final Layout<? extends Serializable> layout) {
+            this.os = os;
+            this.name = type;
+            this.layout = layout;
+        }
+    }
+
+    /**
+     * Factory to create the Appender.
+     */
+    private static class ConsoleManagerFactory implements ManagerFactory<OutputStreamManager, FactoryData> {
+
+        /**
+         * Create an OutputStreamManager.
+         *
+         * @param name The name of the entity to manage.
+         * @param data The data required to create the entity.
+         * @return The OutputStreamManager
+         */
+        @Override
+        public OutputStreamManager createManager(final String name, final FactoryData data) {
+            return new OutputStreamManager(data.os, data.name, data.layout, true);
+        }
+    }
+
+    public Target getTarget() {
+        return target;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/06c55468/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
index 0527709..a4ea02e 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
@@ -57,12 +57,14 @@ public class Log4j2AppenderComparisonBenchmark {
     private Logger rafLogger;
     private Logger mmapLogger;
     private Logger consoleLogger;
+    private Logger fastConsoleLogger;
     private Logger noopLogger;
     private Logger rewriteLogger;
     private Appender fileAppender;
     private Appender rafAppender;
     private Appender mmapAppender;
     private Appender consoleAppender;
+    private Appender fastConsoleAppender;
     private Appender noopAppender;
     private Appender rewriteAppender;
 
@@ -102,6 +104,7 @@ public class Log4j2AppenderComparisonBenchmark {
         rafLogger = LogManager.getLogger("RAFLogger");
         mmapLogger = LogManager.getLogger("MMapLogger");
         consoleLogger = LogManager.getLogger("ConsoleLogger");
+        fastConsoleLogger = LogManager.getLogger("FastConsoleLogger");
         noopLogger = LogManager.getLogger("NoopLogger");
         rewriteLogger = LogManager.getLogger("RewriteLogger");
 
@@ -109,6 +112,7 @@ public class Log4j2AppenderComparisonBenchmark {
         rafAppender = ((org.apache.logging.log4j.core.Logger) rafLogger).getAppenders().get("RandomAccessFile");
         mmapAppender = ((org.apache.logging.log4j.core.Logger) mmapLogger).getAppenders().get("MemoryMappedFile");
         consoleAppender = ((org.apache.logging.log4j.core.Logger) consoleLogger).getAppenders().get("Console");
+        fastConsoleAppender = ((org.apache.logging.log4j.core.Logger) fastConsoleLogger).getAppenders().get("FastConsole");
         noopAppender = ((org.apache.logging.log4j.core.Logger) noopLogger).getAppenders().get("NoOp");
         rewriteAppender = ((org.apache.logging.log4j.core.Logger) rewriteLogger).getAppenders().get("Rewrite");
     }
@@ -218,4 +222,18 @@ public class Log4j2AppenderComparisonBenchmark {
     public void appenderConsole() {
         consoleAppender.append(EVENT);
     }
+
+    @BenchmarkMode(Mode.Throughput)
+    @OutputTimeUnit(TimeUnit.SECONDS)
+    @Benchmark
+    public void end2endFastConsole() {
+        fastConsoleLogger.debug(MESSAGE);
+    }
+
+    @BenchmarkMode(Mode.Throughput)
+    @OutputTimeUnit(TimeUnit.SECONDS)
+    @Benchmark
+    public void appenderFastConsole() {
+        fastConsoleAppender.append(EVENT);
+    }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/06c55468/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/resources/log4j2-appenderComparison.xml b/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
index 741a225..8ad6327 100644
--- a/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
+++ b/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
@@ -21,6 +21,9 @@
         <Console name="Console" target="SYSTEM_OUT">
             <PatternLayout pattern="%d %p [%t] %c{1} %X{transactionId} - %m%n"/>
         </Console>
+        <FastConsole name="FastConsole" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %p [%t] %c{1} %X{transactionId} - %m%n"/>
+        </FastConsole>
         <File name="File" fileName="target/testlog4j2.log" immediateFlush="false">
             <PatternLayout pattern="%d %p [%t] %c{1} %X{transactionId} - %m%n"/>
         </File>
@@ -55,6 +58,9 @@
         <Logger name="ConsoleLogger" level="debug" additivity="false">
             <AppenderRef ref="Console"/>
         </Logger>
+        <Logger name="FastConsoleLogger" level="debug" additivity="false">
+            <AppenderRef ref="FastConsole"/>
+        </Logger>
         <Logger name="NoopLogger" level="debug" additivity="false">
             <AppenderRef ref="NoOp"/>
         </Logger>


[19/19] logging-log4j2 git commit: Fix typo

Posted by mi...@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/24bfc3e8
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/24bfc3e8
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/24bfc3e8

Branch: refs/heads/master
Commit: 24bfc3e867484b7a98fbef2623619b93562d8735
Parents: 10dbe30
Author: Mikael St�ldal <mi...@magine.com>
Authored: Tue Jun 14 09:52:06 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Tue Jun 14 09:52:06 2016 +0200

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


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/24bfc3e8/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 053e712..b217bf3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -25,7 +25,7 @@
   <body>
     <release version="2.6.2" date="2016-MM-DD" description="GA Release 2.6.2">
       <action issue="LOG4J2-1395" dev="mikes" type="add">
-        "direct" option to ConsoleAdapter for increased performance.
+        "direct" option to ConsoleAppender for increased performance.
       </action>
       <action issue="LOG4J2-1418" dev="mikes" type="fix">
         Provide MessageFactory2 to custom Logger implementations.


[12/19] logging-log4j2 git commit: Clarify docs

Posted by mi...@apache.org.
Clarify docs


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

Branch: refs/heads/master
Commit: ad0b66eb2d2f27512d30f779c3a42a7b11823caf
Parents: 1a7715c
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon Jun 13 16:41:19 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon Jun 13 16:41:19 2016 +0200

----------------------------------------------------------------------
 src/site/xdoc/manual/appenders.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ad0b66eb/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index 7b7aa41..9e1c44a 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -195,7 +195,8 @@
               <td>boolean</td>
               <td>Write directly to <code>java.io.FileDescriptor</code> and bypass <code>java.lang.System.out/.err</code>.
                 Can give up to 10x performance boost when the output is redirected to file or other process.
-                Cannot be used with Jansi on Windows. Cannot be used with <code>follow</code>.
+                Cannot be used with Jansi on Windows. Cannot be used with <code>follow</code>. Output will not respect
+                <code>java.lang.System.setOut()/.setErr()</code>
                 <i>New since 2.6.2. Be aware that this is a new addition, and although it has been
                   tested on several platforms, it does not have as much track record as using ConsoleAppender without it.</i>
               </td>


[04/19] logging-log4j2 git commit: Docs

Posted by mi...@apache.org.
Docs


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

Branch: refs/heads/master
Commit: a9bff15bb237cc65bd2e58c6eba508cc60bc8d0f
Parents: 50d0bf1
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon May 30 17:02:49 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon May 30 17:02:49 2016 +0200

----------------------------------------------------------------------
 src/site/xdoc/manual/appenders.xml | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a9bff15b/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index ac562c5..065c87f 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -188,7 +188,13 @@
               <td>boolean</td>
               <td>Identifies whether the appender honors reassignments of System.out or System.err
                 via System.setOut or System.setErr made after configuration. Note that the follow
-                attribute cannot be used with Jansi on Windows.</td>
+                attribute cannot be used with Jansi on Windows. Cannot be used with <code>direct</code>.</td>
+            </tr>
+            <tr>
+              <td>direct</td>
+              <td>boolean</td>
+              <td>Write directly to <code>java.io.FileDescriptor</code> and bypass <code>java.lang.System.out/.err</code>.
+                Can give up to 5x performance boost. Cannot be used with <code>follow</code>.</td>
             </tr>
             <tr>
               <td>name</td>


[18/19] logging-log4j2 git commit: Update changes.xml

Posted by mi...@apache.org.
Update changes.xml


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

Branch: refs/heads/master
Commit: 10dbe3029ec97c63971737633fe00dfc252fa439
Parents: a8d466d
Author: Mikael St�ldal <mi...@magine.com>
Authored: Tue Jun 14 09:49:14 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Tue Jun 14 09:49:14 2016 +0200

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


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/10dbe302/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 0924f00..053e712 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,6 +24,9 @@
   </properties>
   <body>
     <release version="2.6.2" date="2016-MM-DD" description="GA Release 2.6.2">
+      <action issue="LOG4J2-1395" dev="mikes" type="add">
+        "direct" option to ConsoleAdapter for increased performance.
+      </action>
       <action issue="LOG4J2-1418" dev="mikes" type="fix">
         Provide MessageFactory2 to custom Logger implementations.
       </action>


[10/19] logging-log4j2 git commit: Merge branch 'master' into LOG4J2-1395

Posted by mi...@apache.org.
Merge branch 'master' into LOG4J2-1395


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

Branch: refs/heads/master
Commit: 22313da8c948f134d8325f51ff7139c2dce585de
Parents: 504a0e6 021da77
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon Jun 13 11:31:18 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon Jun 13 11:31:18 2016 +0200

----------------------------------------------------------------------
 BUILDING.txt                                    |   2 +-
 .../java/org/apache/logging/log4j/Logger.java   |  14 ++-
 .../log4j/message/ParameterFormatter.java       |  21 ++++
 .../logging/log4j/spi/AbstractLogger.java       |  26 +----
 .../apache/logging/log4j/util/Constants.java    |  61 ++++++++++
 .../apache/logging/log4j/util/LoaderUtil.java   |   1 +
 .../org/apache/logging/log4j/util/Unbox.java    |  46 +++++++-
 .../log4j/core/appender/AsyncAppender.java      |   3 +
 .../core/appender/RollingFileAppender.java      |   2 +
 .../RollingRandomAccessFileAppender.java        |   2 +
 .../appender/rolling/RollingFileManager.java    |   3 +
 .../rolling/RollingRandomAccessFileManager.java |   6 +-
 .../logging/log4j/core/util/Constants.java      |   6 +-
 .../AsyncAppenderQueueFullPolicyTest.java       |  29 +++--
 .../rolling/OnStartupTriggeringPolicyTest.java  |   1 +
 .../RandomRollingAppenderOnStartupTest.java     | 110 +++++++++++++++++++
 .../rolling/RollingAppenderOnStartupTest.java   |  21 +++-
 .../rolling/RollingAppenderSizeTest.java        |  35 +++++-
 .../log4j/test/appender/BlockingAppender.java   |   1 +
 log4j-core/src/test/resources/log4j-test5.xml   |  36 ++++++
 .../logging/log4j/perf/jmh/UnboxBenchmark.java  |  91 +++++++++++++++
 pom.xml                                         |   3 +-
 src/changes/changes.xml                         |  23 ++++
 src/site/xdoc/articles.xml                      |   4 +
 src/site/xdoc/manual/extending.xml              |  10 +-
 25 files changed, 493 insertions(+), 64 deletions(-)
----------------------------------------------------------------------



[08/19] logging-log4j2 git commit: Do not use Jansi in direct mode

Posted by mi...@apache.org.
Do not use Jansi in direct mode


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

Branch: refs/heads/master
Commit: 3e3c8f43f80e42a9d4e8d3c132dbd40b5d05c34c
Parents: 10f724f
Author: Mikael St�ldal <mi...@magine.com>
Authored: Tue Jun 7 11:31:36 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Tue Jun 7 11:31:36 2016 +0200

----------------------------------------------------------------------
 .../org/apache/logging/log4j/core/appender/ConsoleAppender.java   | 2 +-
 src/site/xdoc/manual/appenders.xml                                | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3e3c8f43/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 3f86457..2e3b38f 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
@@ -265,7 +265,7 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
             throw new IllegalStateException("Unsupported default encoding " + enc, ex);
         }
         final PropertiesUtil propsUtil = PropertiesUtil.getProperties();
-        if (!propsUtil.isOsWindows() || propsUtil.getBooleanProperty("log4j.skipJansi")) {
+        if (!propsUtil.isOsWindows() || propsUtil.getBooleanProperty("log4j.skipJansi") || direct) {
             return outputStream;
         }
         try {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3e3c8f43/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index 918dd66..a1f974e 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -194,7 +194,8 @@
               <td>direct</td>
               <td>boolean</td>
               <td>Write directly to <code>java.io.FileDescriptor</code> and bypass <code>java.lang.System.out/.err</code>.
-                Can give up to 10x performance boost. Cannot be used with <code>follow</code>.</td>
+                Can give up to 10x performance boost. Cannot be used with Jansi on Windows.
+                Cannot be used with <code>follow</code>.</td>
             </tr>
             <tr>
               <td>name</td>


[05/19] logging-log4j2 git commit: Merge branch 'master' into LOG4J2-1395

Posted by mi...@apache.org.
Merge branch 'master' into LOG4J2-1395


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

Branch: refs/heads/master
Commit: 76400477aae680862e3001107d06faf1fe3e244f
Parents: a9bff15 2c4bdbb
Author: Mikael St�ldal <mi...@magine.com>
Authored: Tue May 31 10:18:03 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Tue May 31 10:18:03 2016 +0200

----------------------------------------------------------------------
 src/site/xdoc/manual/appenders.xml     | 3 ++-
 src/site/xdoc/runtime-dependencies.xml | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/76400477/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------


[17/19] logging-log4j2 git commit: Merge branch 'master' into LOG4J2-1395

Posted by mi...@apache.org.
Merge branch 'master' into LOG4J2-1395


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

Branch: refs/heads/master
Commit: a8d466da02f1d2f36210ff787ed0b8ea1e64eec7
Parents: 7a06cd9 86095e9
Author: Mikael St�ldal <mi...@magine.com>
Authored: Tue Jun 14 09:47:52 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Tue Jun 14 09:47:52 2016 +0200

----------------------------------------------------------------------
 log4j-bom/pom.xml              |  4 ++--
 pom.xml                        | 36 +++++++++++++++++++++++++-----------
 src/site/xdoc/manual/async.xml |  4 ++--
 3 files changed, 29 insertions(+), 15 deletions(-)
----------------------------------------------------------------------



[16/19] logging-log4j2 git commit: Fix formatting

Posted by mi...@apache.org.
Fix formatting


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

Branch: refs/heads/master
Commit: 7a06cd98eb585915236e159a2d4e10558eeb4535
Parents: 069e379
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon Jun 13 20:43:06 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon Jun 13 20:43:06 2016 +0200

----------------------------------------------------------------------
 src/site/xdoc/manual/appenders.xml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a06cd98/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index ef675c6..f516d00 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -199,8 +199,7 @@
                 <code>java.lang.System.setOut()/.setErr()</code> and may get intertwined with other output to
                 <code>java.lang.System.out/.err</code> in a multi-threaded application.
                 <i>New since 2.6.2. Be aware that this is a new addition, and it has only been tested with Oracle JVM
-                  on Linux and Windows so far.</i>
-              </td>
+                  on Linux and Windows so far.</i></td>
             </tr>
             <tr>
               <td>name</td>


[15/19] logging-log4j2 git commit: Clarify docs more

Posted by mi...@apache.org.
Clarify docs more


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

Branch: refs/heads/master
Commit: 069e379f4bbe87ea6bb82c108784a9cf4d0da264
Parents: d0dacc5
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon Jun 13 20:42:24 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon Jun 13 20:42:24 2016 +0200

----------------------------------------------------------------------
 src/site/xdoc/manual/appenders.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/069e379f/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index f1924d3..ef675c6 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -198,8 +198,8 @@
                 Cannot be used with Jansi on Windows. Cannot be used with <code>follow</code>. Output will not respect
                 <code>java.lang.System.setOut()/.setErr()</code> and may get intertwined with other output to
                 <code>java.lang.System.out/.err</code> in a multi-threaded application.
-                <i>New since 2.6.2. Be aware that this is a new addition, and although it has been
-                  tested on several platforms, it does not have as much track record as using ConsoleAppender without it.</i>
+                <i>New since 2.6.2. Be aware that this is a new addition, and it has only been tested with Oracle JVM
+                  on Linux and Windows so far.</i>
               </td>
             </tr>
             <tr>


[06/19] logging-log4j2 git commit: Update docs

Posted by mi...@apache.org.
Update docs


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

Branch: refs/heads/master
Commit: 05559782b7bcdc29cd1caf6917a4ea8ec8770965
Parents: 7640047
Author: Mikael St�ldal <mi...@magine.com>
Authored: Tue May 31 10:18:33 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Tue May 31 10:18:33 2016 +0200

----------------------------------------------------------------------
 src/site/xdoc/manual/appenders.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/05559782/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index d5a0c20..e99bcc3 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -194,7 +194,7 @@
               <td>direct</td>
               <td>boolean</td>
               <td>Write directly to <code>java.io.FileDescriptor</code> and bypass <code>java.lang.System.out/.err</code>.
-                Can give up to 5x performance boost. Cannot be used with <code>follow</code>.</td>
+                Can give up to 10x performance boost. Cannot be used with <code>follow</code>.</td>
             </tr>
             <tr>
               <td>name</td>


[07/19] logging-log4j2 git commit: Merge branch 'master' into LOG4J2-1395

Posted by mi...@apache.org.
Merge branch 'master' into LOG4J2-1395


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

Branch: refs/heads/master
Commit: 10f724f3043852ce7a70bbfa32fa460471a72f5d
Parents: 0555978 b06f6ce
Author: Mikael St�ldal <mi...@magine.com>
Authored: Tue Jun 7 11:26:47 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Tue Jun 7 11:26:47 2016 +0200

----------------------------------------------------------------------
 RELEASE-NOTES.txt                               | 160 +----
 log4j-1.2-api/pom.xml                           |   2 +-
 .../java/org/apache/log4j/LogWithMDCTest.java   |   6 +-
 .../java/org/apache/log4j/LogWithRouteTest.java |   6 +-
 log4j-api/pom.xml                               |   2 +-
 .../logging/log4j/CloseableThreadContext.java   |  11 +-
 .../org/apache/logging/log4j/LogManager.java    |  18 +-
 .../log4j/message/AbstractMessageFactory.java   | 110 ++-
 .../log4j/message/FormattedMessageFactory.java  |  97 ++-
 .../log4j/message/LocalizedMessageFactory.java  |  10 +-
 .../logging/log4j/message/MessageFactory2.java  |   2 +
 .../log4j/message/MessageFormatMessage.java     |   2 +-
 .../message/MessageFormatMessageFactory.java    |  93 ++-
 .../log4j/message/ParameterFormatter.java       |  10 +-
 .../log4j/message/ParameterizedMessage.java     |   6 +-
 .../message/ParameterizedMessageFactory.java    | 105 ++-
 .../ParameterizedNoReferenceMessageFactory.java |  12 +-
 .../log4j/message/ReusableMessageFactory.java   |   6 +-
 .../log4j/message/ReusableObjectMessage.java    |   2 +-
 .../message/ReusableParameterizedMessage.java   |  77 ++-
 .../log4j/message/ReusableSimpleMessage.java    |   4 +-
 .../logging/log4j/message/SimpleMessage.java    |   4 +-
 .../log4j/message/SimpleMessageFactory.java     | 102 ++-
 .../log4j/message/StringFormattedMessage.java   |   6 +
 .../message/StringFormatterMessageFactory.java  |  94 ++-
 .../log4j/simple/SimpleLoggerContext.java       |   4 +-
 .../logging/log4j/spi/LoggerRegistry.java       |   2 +-
 .../org/apache/logging/log4j/spi/Provider.java  |   4 +-
 .../apache/logging/log4j/status/StatusData.java |   2 +-
 .../logging/log4j/status/StatusLogger.java      |   2 +-
 .../apache/logging/log4j/util/Activator.java    |   1 +
 .../apache/logging/log4j/util/LambdaUtil.java   |   2 +-
 .../org/apache/logging/log4j/util/Supplier.java |   1 +
 .../org/apache/logging/log4j/util/Unbox.java    |  76 +-
 .../logging/log4j/AbstractLoggerTest.java       |   4 +-
 .../apache/logging/log4j/LogManagerTest.java    |   2 +-
 .../org/apache/logging/log4j/LoggerTest.java    |  16 +-
 .../apache/logging/log4j/TestLoggerContext.java |   4 +-
 .../logging/log4j/message/JsonMessage.java      |   2 +-
 .../log4j/message/ParameterFormatterTest.java   |  12 +-
 .../message/ReusableObjectMessageTest.java      |  18 +-
 .../ReusableParameterizedMessageTest.java       |  15 +-
 .../message/ReusableSimpleMessageTest.java      |  18 +-
 .../log4j/util/UnboxConfigurableTest.java       |  67 ++
 .../apache/logging/log4j/util/UnboxTest.java    |  24 +-
 log4j-bom/pom.xml                               |   8 +-
 log4j-core/pom.xml                              |   6 +-
 .../org/apache/logging/log4j/core/Logger.java   |   4 +-
 .../logging/log4j/core/LoggerContext.java       |   4 +-
 .../log4j/core/appender/AbstractManager.java    |  10 +-
 .../log4j/core/appender/AsyncAppender.java      |   2 +-
 .../log4j/core/appender/ConsoleAppender.java    |   2 +-
 .../core/appender/CountingNoOpAppender.java     |   6 +-
 .../core/appender/OutputStreamManager.java      |  15 +-
 .../log4j/core/appender/SocketAppender.java     |   4 +-
 .../core/appender/mom/kafka/KafkaAppender.java  | 226 +++---
 .../appender/rolling/CronTriggeringPolicy.java  |  10 +-
 .../rolling/DefaultRolloverStrategy.java        |  12 +-
 .../log4j/core/appender/rolling/FileSize.java   | 180 ++---
 .../rolling/OnStartupTriggeringPolicy.java      |  48 +-
 .../appender/rolling/RollingFileManager.java    |   4 +-
 .../appender/rolling/action/DeleteAction.java   |   2 +-
 .../core/appender/rolling/action/Duration.java  | 514 +++++++-------
 .../rolling/action/FileRenameAction.java        |  52 +-
 .../core/appender/rolling/action/IfAll.java     | 232 +++----
 .../core/appender/rolling/action/IfAny.java     | 172 ++---
 .../core/appender/routing/IdlePurgePolicy.java  |  20 +-
 .../core/appender/routing/RoutingAppender.java  |   6 +-
 .../logging/log4j/core/async/AsyncLogger.java   |   4 +-
 ...syncLoggerConfigDefaultExceptionHandler.java |   4 +-
 .../core/async/AsyncLoggerConfigDisruptor.java  |   2 +-
 .../log4j/core/async/AsyncLoggerContext.java    |   4 +-
 .../AsyncLoggerDefaultExceptionHandler.java     |   4 +-
 .../log4j/core/async/AsyncLoggerDisruptor.java  | 472 ++++++-------
 .../logging/log4j/core/async/DisruptorUtil.java |   2 +-
 .../log4j/core/async/RingBufferLogEvent.java    |  16 +-
 .../core/config/AbstractConfiguration.java      |  16 +-
 .../log4j/core/config/AppenderControl.java      |   2 +-
 .../AwaitCompletionReliabilityStrategy.java     | 350 +++++-----
 ...AwaitUnconditionallyReliabilityStrategy.java | 246 +++----
 .../log4j/core/config/ConfigurationFactory.java |  10 +-
 .../core/config/ConfigurationScheduler.java     |  30 +-
 .../log4j/core/config/ConfigurationSource.java  |   6 +-
 .../core/config/ConfiguratonFileWatcher.java    |   4 +-
 .../logging/log4j/core/config/Configurator.java | 688 +++++++++----------
 .../core/config/DefaultReliabilityStrategy.java | 214 +++---
 .../core/config/LockingReliabilityStrategy.java | 270 ++++----
 .../core/config/ReliabilityStrategyFactory.java | 140 ++--
 .../config/builder/impl/BuiltConfiguration.java |   6 +-
 .../impl/DefaultConfigurationBuilder.java       |  20 +-
 .../impl/DefaultLoggerComponentBuilder.java     |   4 +-
 .../impl/DefaultScriptFileComponentBuilder.java |   8 +-
 .../composite/CompositeConfiguration.java       |  52 +-
 .../config/composite/DefaultMergeStrategy.java  |  76 +-
 .../core/config/json/JsonConfiguration.java     |   2 +-
 .../properties/PropertiesConfiguration.java     |   2 +-
 .../PropertiesConfigurationBuilder.java         |  68 +-
 .../PropertiesConfigurationFactory.java         |   2 +-
 .../log4j/core/config/xml/XmlConfiguration.java |   6 +-
 .../log4j/core/filter/AbstractFilterable.java   |  14 +-
 .../logging/log4j/core/filter/BurstFilter.java  |   2 +-
 .../log4j/core/filter/CompositeFilter.java      |  27 +-
 .../core/filter/DynamicThresholdFilter.java     |   2 +-
 .../logging/log4j/core/filter/ScriptFilter.java |  16 +-
 .../logging/log4j/core/filter/TimeFilter.java   |   2 +-
 .../log4j/core/impl/Log4jContextFactory.java    |   8 +-
 .../logging/log4j/core/impl/Log4jLogEvent.java  |  34 +-
 .../log4j/core/impl/MutableLogEvent.java        |  34 +-
 .../log4j/core/layout/AbstractStringLayout.java |   2 +-
 .../log4j/core/layout/CsvLogEventLayout.java    |   3 -
 .../logging/log4j/core/layout/GelfLayout.java   |  12 +-
 .../log4j/core/layout/JacksonFactory.java       |   4 +-
 .../core/layout/MarkerPatternSelector.java      |  20 +-
 .../log4j/core/layout/PatternLayout.java        |   4 +-
 .../core/layout/ScriptPatternSelector.java      |  24 +-
 .../log4j/core/layout/TextEncoderHelper.java    |   4 +-
 .../logging/log4j/core/net/SmtpManager.java     |   4 +-
 .../log4j/core/net/TcpSocketManager.java        |   2 +-
 .../pattern/EqualsReplacementConverter.java     |   2 +-
 .../ExtendedThrowablePatternConverter.java      |   2 +-
 .../core/pattern/MessagePatternConverter.java   |   2 +-
 .../log4j/core/pattern/NameAbbreviator.java     |   4 +-
 .../pattern/RootThrowablePatternConverter.java  |   2 +-
 .../VariablesNotEmptyReplacementConverter.java  |   2 +-
 .../logging/log4j/core/script/Script.java       |   2 +-
 .../logging/log4j/core/script/ScriptFile.java   |  12 +-
 .../log4j/core/script/ScriptManager.java        |  14 +-
 .../logging/log4j/core/script/ScriptRef.java    |   8 +-
 .../logging/log4j/core/util/CronExpression.java | 180 ++---
 .../logging/log4j/core/util/DummyNanoClock.java |  96 +--
 .../core/util/ExtensionLanguageMapping.java     |   6 +-
 .../logging/log4j/core/util/FileUtils.java      |   4 +-
 .../logging/log4j/core/util/JsonUtils.java      |  14 +-
 .../logging/log4j/core/util/StringEncoder.java  |  14 +-
 .../logging/log4j/core/util/Throwables.java     |  60 +-
 .../logging/log4j/core/util/WatchManager.java   |  22 +-
 .../core/util/datetime/FixedDateFormat.java     | 686 +++++++++---------
 .../core/GcFreeAsynchronousLoggingTest.java     |   2 +-
 .../log4j/core/GcFreeLoggingTestUtil.java       |   6 +-
 .../core/GcFreeMixedSyncAyncLoggingTest.java    |   2 +-
 .../core/GcFreeSynchronousLoggingTest.java      |   2 +-
 .../logging/log4j/core/Log4j1222Test.java       |   2 +-
 .../apache/logging/log4j/core/LogEventTest.java |   4 +-
 .../apache/logging/log4j/core/LoggerTest.java   |  14 +-
 .../logging/log4j/core/PatternSelectorTest.java |  16 +-
 .../log4j/core/PropertiesFileConfigTest.java    |   2 +-
 .../AsyncAppenderQueueFullPolicyTest.java       |   6 +-
 .../log4j/core/appender/HangingAppender.java    |   6 +-
 .../log4j/core/appender/SocketAppenderTest.java |   2 +-
 .../appender/XmlCompleteFileAppenderTest.java   |   2 +-
 .../appender/mom/kafka/KafkaAppenderTest.java   | 292 ++++----
 .../rolling/OnStartupTriggeringPolicyTest.java  |  69 +-
 .../rolling/RollingAppenderCronTest.java        |  10 +-
 .../RollingAppenderCustomDeleteActionTest.java  |  12 +-
 ...lingAppenderDeleteAccumulatedCount1Test.java |  24 +-
 ...lingAppenderDeleteAccumulatedCount2Test.java |  24 +-
 ...ollingAppenderDeleteAccumulatedSizeTest.java |   4 +-
 .../RollingAppenderDeleteMaxDepthTest.java      |  24 +-
 .../RollingAppenderDeleteNestedTest.java        |  24 +-
 .../RollingAppenderDeleteScriptFri13thTest.java |   8 +-
 .../RollingAppenderDeleteScriptTest.java        |   8 +-
 ...ollingAppenderNoUnconditionalDeleteTest.java |   6 +-
 .../rolling/RollingAppenderOnStartupTest.java   | 100 +++
 .../rolling/RollingAppenderSizeTest.java        |  14 +-
 .../rolling/action/CountingCondition.java       | 124 ++--
 .../rolling/action/DeleteActionTest.java        | 238 +++----
 .../rolling/action/DeletingVisitorTest.java     | 270 ++++----
 .../appender/rolling/action/DurationTest.java   | 298 ++++----
 .../appender/rolling/action/FixedCondition.java |  88 +--
 .../action/IfAccumulatedFileCountTest.java      | 150 ++--
 .../action/IfAccumulatedFileSizeTest.java       | 260 +++----
 .../rolling/action/IfLastModifiedTest.java      | 194 +++---
 .../action/PathSortByModificationTimeTest.java  | 186 ++---
 .../rolling/action/ScriptConditionTest.java     | 260 +++----
 .../rolling/action/SortingVisitorTest.java      | 188 ++---
 .../routing/RoutingAppenderWithPurgingTest.java |   6 +-
 .../core/async/AsyncLoggerTestNanoTime.java     |   2 +-
 .../async/AsyncQueueFullPolicyFactoryTest.java  |   4 +-
 .../async/DefaultAsyncQueueFullPolicyTest.java  |   4 +-
 .../DiscardingAsyncQueueFullPolicyTest.java     |  22 +-
 .../core/async/perftest/PerfTestDriver.java     |   4 +-
 .../core/async/perftest/ResponseTimeTest.java   |  42 +-
 .../core/async/perftest/SimplePerfTest.java     |  28 +-
 .../core/config/AbstractLog4j2_1100Test.java    | 136 ++--
 .../config/AppenderControlArraySetTest.java     |  12 +-
 .../core/config/CompositeConfigurationTest.java |   8 +-
 .../log4j/core/config/ConfiguratorTest.java     |  94 +--
 .../log4j/core/config/TestConfigurator.java     |  20 +-
 .../builder/ConfigurationAssemblerTest.java     |  14 +-
 .../builder/CustomConfigurationFactory.java     |   8 +-
 ...opertiesConfigurationRootLoggerOnlyTest.java |  10 +-
 .../properties/PropertiesConfigurationTest.java |  10 +-
 .../properties/RollingFilePropertiesTest.java   |  10 +-
 .../core/filter/AbstractFilterableTest.java     | 281 ++++++++
 .../core/filter/AbstractScriptFilterTest.java   |   8 +-
 .../core/impl/Log4jLogEventNanoTimeTest.java    |   2 +-
 .../log4j/core/impl/Log4jLogEventTest.java      |  18 +-
 .../log4j/core/impl/MutableLogEventTest.java    |  12 +-
 .../core/impl/ReusableLogEventFactoryTest.java  |  12 +-
 .../log4j/core/impl/ThrowableProxyTest.java     |   2 +-
 .../core/layout/CsvLogEventLayoutTest.java      | 340 ++++-----
 .../layout/CsvParameterLayoutAllAsyncTest.java  |   6 +-
 .../core/layout/CsvParameterLayoutTest.java     | 322 ++++-----
 .../log4j/core/layout/GelfLayoutTest.java       |   6 +-
 .../log4j/core/layout/HtmlLayoutTest.java       |   2 +-
 .../log4j/core/layout/JsonLayoutTest.java       |   2 +-
 .../layout/PatternLayoutMainMapLookupTest.java  | 128 ++--
 .../log4j/core/layout/PatternLayoutTest.java    |  12 +-
 .../log4j/core/layout/PatternSelectorTest.java  | 130 ++--
 .../log4j/core/layout/Rfc5424LayoutTest.java    |   2 +-
 .../log4j/core/layout/SerializedLayoutTest.java |   2 +-
 .../core/layout/SpyByteBufferDestination.java   |   2 +-
 .../core/layout/StringBuilderEncoderTest.java   |   6 +-
 .../log4j/core/layout/SyslogLayoutTest.java     |   2 +-
 .../log4j/core/layout/XmlLayoutTest.java        |   2 +-
 .../log4j/core/layout/YamlLayoutTest.java       |   6 +-
 .../server/UdpSerializedSocketServerTest.java   |   2 +
 .../core/net/ssl/SslConfigurationTest.java      |   4 +-
 .../core/pattern/DatePatternConverterTest.java  |   2 +-
 ...qualsIgnoreCaseReplacementConverterTest.java |   2 +-
 .../pattern/EqualsReplacementConverterTest.java |   2 +-
 .../log4j/core/pattern/PatternParserTest.java   |  12 +-
 ...riablesNotEmptyReplacementConverterTest.java |   2 +-
 .../log4j/core/util/CronExpressionTest.java     |  32 +-
 .../logging/log4j/core/util/ThrowablesTest.java |   4 +-
 .../log4j/core/util/WatchManagerTest.java       |  20 +-
 .../apache/logging/log4j/junit/CleanFiles.java  |   6 +-
 .../logging/log4j/junit/LoggerContextRule.java  |  92 +--
 ...MutableLogEventWithReusableParamMsgTest.java |  53 ++
 .../log4j/test/appender/BlockingAppender.java   |   2 +-
 .../test/appender/EncodingListAppender.java     |  12 +-
 .../log4j/test/appender/ListAppender.java       |  68 +-
 .../src/test/resources/log4j-rolling.properties |  24 +-
 log4j-core/src/test/resources/log4j-test4.xml   |  36 +
 log4j-distribution/pom.xml                      |   2 +-
 log4j-flume-ng/pom.xml                          |   2 +-
 .../log4j/flume/appender/FlumeAppenderTest.java |   2 +-
 log4j-iostreams/pom.xml                         |   2 +-
 log4j-jcl/pom.xml                               |   2 +-
 log4j-jmx-gui/pom.xml                           |   2 +-
 log4j-jul/pom.xml                               |   2 +-
 .../logging/log4j/jul/AbstractLoggerTest.java   |   4 +-
 log4j-liquibase/pom.xml                         |   2 +-
 log4j-nosql/pom.xml                             |   2 +-
 .../nosql/appender/mongodb/MongoDbProvider.java |   4 +-
 log4j-perf/pom.xml                              |   2 +-
 .../message/ParameterFormatterBenchmark.java    |  40 +-
 ...ractStringLayoutStringEncodingBenchmark.java |  32 +-
 .../log4j/perf/jmh/CollectionsBenchmark.java    |  12 +-
 .../log4j/perf/jmh/FileAppenderBenchmark.java   |  10 +-
 .../perf/jmh/FileAppenderParamsBenchmark.java   |  10 +-
 .../jmh/Log4j2AppenderComparisonBenchmark.java  |   6 +-
 .../log4j/perf/jmh/LoggerConfigBenchmark.java   |   2 +-
 .../jmh/MemoryHandlerJULLocationBenchmark.java  |   2 +-
 .../perf/jmh/ParameterizedMessageBenchmark.java |   2 +-
 .../ParameterizedMessageInliningBenchmark.java  |  20 +-
 .../jmh/PatternLayoutComparisonBenchmark.java   |   2 +-
 .../log4j/perf/jmh/StringEncodingBenchmark.java |  30 +-
 .../perf/jmh/TextEncoderHelperBenchmark.java    |  12 +-
 ...ThreadLocalVsConcurrentHashMapBenchmark.java |   6 +-
 .../perf/jmh/ThreadLocalVsPoolBenchmark.java    |  14 +-
 .../perf/jmh/ThreadsafeDateFormatBenchmark.java |   4 +-
 .../log4j/perf/jmh/VarargsBenchmark.java        |   6 +-
 .../logging/log4j/perf/nogc/AbstractLogger.java |   6 +-
 .../logging/log4j/perf/nogc/ClassicLogger.java  |   2 +-
 .../logging/log4j/perf/nogc/DemoAppender.java   |  12 +-
 .../logging/log4j/perf/nogc/NoGcLayout.java     |  16 +-
 .../logging/log4j/perf/nogc/NoGcLogger.java     |   2 +-
 .../logging/log4j/perf/nogc/NoGcMessage.java    |  10 +-
 .../log4j/perf/nogc/ParameterizedMessage.java   |   6 +-
 .../apache/logging/log4j/perf/nogc/Test.java    |  24 +-
 .../logging/log4j/perf/util/DemoAppender.java   |  10 +-
 log4j-samples/configuration/pom.xml             |   2 +-
 .../configuration/CustomConfiguration.java      |   2 +-
 log4j-samples/flume-common/pom.xml              |   2 +-
 log4j-samples/flume-embedded/pom.xml            |   2 +-
 log4j-samples/flume-remote/pom.xml              |   2 +-
 log4j-samples/loggerProperties/pom.xml          |   2 +-
 .../logging/log4j/lookup/CustomLookup.java      |   8 +-
 .../logging/log4j/lookup/CustomMapMessage.java  |   2 +-
 .../logging/log4j/lookup/MapMessageLookup.java  |  10 +-
 .../logging/log4j/CustomPropertiesTest.java     |   8 +-
 log4j-samples/pom.xml                           |   2 +-
 log4j-slf4j-impl/pom.xml                        |   2 +-
 log4j-taglib/pom.xml                            |   2 +-
 .../log4j/taglib/Log4jTaglibLoggerContext.java  |   4 +-
 log4j-to-slf4j/pom.xml                          |   2 +-
 .../logging/slf4j/SLF4JLoggerContext.java       |   4 +-
 log4j-web/pom.xml                               |   2 +-
 .../log4j/web/ServletRequestThreadContext.java  |   8 +-
 log4j-web/src/site/xdoc/index.xml               |  16 -
 pom.xml                                         |   6 +-
 src/changes/announcement.vm                     |  20 +-
 src/changes/changes.xml                         |  36 +-
 src/site/resources/images/logo.png              | Bin 0 -> 41622 bytes
 .../resources/logo/logo-lightning-2.6.1.png     | Bin 0 -> 41622 bytes
 .../resources/logo/logo-lightning-2.6.1.xcf     | Bin 0 -> 65630 bytes
 src/site/resources/logo/logo.jpg                | Bin 0 -> 14818 bytes
 src/site/site.vm                                |   8 +-
 src/site/site.xml                               |   7 +-
 src/site/xdoc/articles.xml                      |   8 +
 src/site/xdoc/faq.xml                           |  51 +-
 src/site/xdoc/index.xml                         | 142 ----
 src/site/xdoc/index.xml.vm                      | 164 +++++
 src/site/xdoc/manual/appenders.xml              |  10 +-
 src/site/xdoc/manual/configuration.xml.vm       |  24 +-
 src/site/xdoc/manual/extending.xml              | 112 +++
 src/site/xdoc/manual/garbagefree.xml            |  15 +-
 src/site/xdoc/manual/layouts.xml.vm             |   4 +-
 src/site/xdoc/manual/messages.xml               |  14 +-
 310 files changed, 7146 insertions(+), 5780 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/10f724f3/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/10f724f3/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/10f724f3/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------


[09/19] logging-log4j2 git commit: Update docs.

Posted by mi...@apache.org.
Update docs.


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

Branch: refs/heads/master
Commit: 504a0e6a8d99d27aeff7f43d7b2a4909333575c7
Parents: 3e3c8f4
Author: Mikael St�ldal <mi...@magine.com>
Authored: Tue Jun 7 11:52:35 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Tue Jun 7 11:52:35 2016 +0200

----------------------------------------------------------------------
 src/site/xdoc/manual/appenders.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/504a0e6a/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index a1f974e..cdda74d 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -194,8 +194,8 @@
               <td>direct</td>
               <td>boolean</td>
               <td>Write directly to <code>java.io.FileDescriptor</code> and bypass <code>java.lang.System.out/.err</code>.
-                Can give up to 10x performance boost. Cannot be used with Jansi on Windows.
-                Cannot be used with <code>follow</code>.</td>
+                Can give up to 10x performance boost when the output is redirected to file or other process.
+                Cannot be used with Jansi on Windows. Cannot be used with <code>follow</code>.</td>
             </tr>
             <tr>
               <td>name</td>


[14/19] logging-log4j2 git commit: Merge branch 'master' into LOG4J2-1395

Posted by mi...@apache.org.
Merge branch 'master' into LOG4J2-1395


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

Branch: refs/heads/master
Commit: d0dacc513de20d719b0c2e99f4f071b6efdcebad
Parents: 349c5eb 0cf1df0
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon Jun 13 20:41:00 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon Jun 13 20:41:00 2016 +0200

----------------------------------------------------------------------
 .../logging/log4j/core/LoggerContext.java       |  5 +++
 .../logging/log4j/core/async/AsyncLogger.java   |  1 -
 src/site/xdoc/articles.xml                      | 33 ++++++++++++++++++++
 src/site/xdoc/manual/configuration.xml.vm       |  6 ++++
 4 files changed, 44 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[11/19] logging-log4j2 git commit: Update docs

Posted by mi...@apache.org.
Update docs


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

Branch: refs/heads/master
Commit: 1a7715c93142941ac4e10f0bb9259d79e9070f5e
Parents: 22313da
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon Jun 13 11:33:43 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon Jun 13 11:33:43 2016 +0200

----------------------------------------------------------------------
 src/site/xdoc/manual/appenders.xml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1a7715c9/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index cdda74d..7b7aa41 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -195,7 +195,10 @@
               <td>boolean</td>
               <td>Write directly to <code>java.io.FileDescriptor</code> and bypass <code>java.lang.System.out/.err</code>.
                 Can give up to 10x performance boost when the output is redirected to file or other process.
-                Cannot be used with Jansi on Windows. Cannot be used with <code>follow</code>.</td>
+                Cannot be used with Jansi on Windows. Cannot be used with <code>follow</code>.
+                <i>New since 2.6.2. Be aware that this is a new addition, and although it has been
+                  tested on several platforms, it does not have as much track record as using ConsoleAppender without it.</i>
+              </td>
             </tr>
             <tr>
               <td>name</td>


[03/19] logging-log4j2 git commit: direct paramter to ConsoleAppender

Posted by mi...@apache.org.
direct paramter to ConsoleAppender


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

Branch: refs/heads/master
Commit: 50d0bf16861503e41954c74be9db869308b3a3e2
Parents: c0366fd
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon May 30 16:34:19 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon May 30 16:34:19 2016 +0200

----------------------------------------------------------------------
 .../log4j/core/appender/ConsoleAppender.java    |  56 +++--
 .../core/appender/FastConsoleAppender.java      | 227 -------------------
 .../core/appender/ConsoleAppenderTest.java      |  14 +-
 .../jmh/Log4j2AppenderComparisonBenchmark.java  |  16 +-
 .../resources/log4j2-appenderComparison.xml     |   8 +-
 5 files changed, 57 insertions(+), 264 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/50d0bf16/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 4e1e87c..64a3a5b 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
@@ -16,6 +16,8 @@
  */
 package org.apache.logging.log4j.core.appender;
 
+import java.io.FileDescriptor;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintStream;
@@ -80,12 +82,12 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
      * @param layout The layout to use (required).
      * @param filter The Filter or null.
      * @param targetStr The target ("SYSTEM_OUT" or "SYSTEM_ERR"). The default is "SYSTEM_OUT".
-     * @param follow If true will follow changes to the underlying output stream.
      * @param name The name of the Appender (required).
+     * @param follow If true will follow changes to the underlying output stream.
      * @param ignore If {@code "true"} (default) exceptions encountered when appending events are logged; otherwise they
      *            are propagated to the caller.
      * @return The ConsoleAppender.
-     * @deprecated Use {@link #createAppender(Layout, Filter, Target, String, boolean, boolean)}.
+     * @deprecated Use {@link #createAppender(Layout, Filter, Target, String, boolean, boolean, boolean)}.
      */
     @Deprecated
     public static ConsoleAppender createAppender(Layout<? extends Serializable> layout,
@@ -104,7 +106,7 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
         final boolean isFollow = Boolean.parseBoolean(follow);
         final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
         final Target target = targetStr == null ? DEFAULT_TARGET : Target.valueOf(targetStr);
-        return new ConsoleAppender(name, layout, filter, getManager(target, isFollow, layout), ignoreExceptions, target);
+        return new ConsoleAppender(name, layout, filter, getManager(target, isFollow, false, layout), ignoreExceptions, target);
     }
 
     /**
@@ -113,8 +115,10 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
      * @param layout The layout to use (required).
      * @param filter The Filter or null.
      * @param target The target (SYSTEM_OUT or SYSTEM_ERR). The default is SYSTEM_OUT.
-     * @param follow If true will follow changes to the underlying output stream.
      * @param name The name of the Appender (required).
+     * @param follow If true will follow changes to the underlying output stream.
+     * @param direct If true will write directly to {@link java.io.FileDescriptor} and bypass
+     *            {@link System#out}/{@link System#err}.
      * @param ignoreExceptions If {@code "true"} (default) exceptions encountered when appending events are logged; otherwise they
      *            are propagated to the caller.
      * @return The ConsoleAppender.
@@ -127,6 +131,7 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
             @PluginAttribute(value = "target") Target target,
             @PluginAttribute("name") final String name,
             @PluginAttribute(value = "follow", defaultBoolean = false) final boolean follow,
+            @PluginAttribute(value = "direct", defaultBoolean = false) final boolean direct,
             @PluginAttribute(value = "ignoreExceptions", defaultBoolean = true) final boolean ignoreExceptions) {
             // @formatter:on
         if (name == null) {
@@ -137,13 +142,17 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
             layout = PatternLayout.createDefaultLayout();
         }
         target = target == null ? Target.SYSTEM_OUT : target;
-        return new ConsoleAppender(name, layout, filter, getManager(target, follow, layout), ignoreExceptions, target);
+        if (follow && direct) {
+            LOGGER.error("Cannot use both follow and direct on ConsoleAppender");
+            return null;
+        }
+        return new ConsoleAppender(name, layout, filter, getManager(target, follow, direct, layout), ignoreExceptions, target);
     }
 
     public static ConsoleAppender createDefaultAppenderForLayout(final Layout<? extends Serializable> layout) {
         // this method cannot use the builder class without introducing an infinite loop due to DefaultConfiguration
         return new ConsoleAppender("DefaultConsole-" + COUNT.incrementAndGet(), layout, null,
-                getDefaultManager(DEFAULT_TARGET, false, layout), true, DEFAULT_TARGET);
+                getDefaultManager(DEFAULT_TARGET, false, false, layout), true, DEFAULT_TARGET);
     }
 
     @PluginBuilderFactory
@@ -175,6 +184,9 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
         private boolean follow = false;
 
         @PluginBuilderAttribute
+        private boolean direct = false;
+
+        @PluginBuilderAttribute
         private boolean ignoreExceptions = true;
 
         public Builder setLayout(final Layout<? extends Serializable> aLayout) {
@@ -202,6 +214,11 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
             return this;
         }
 
+        public Builder setDirect(final boolean shouldDirect) {
+            this.direct = shouldDirect;
+            return this;
+        }
+
         public Builder setIgnoreExceptions(final boolean shouldIgnoreExceptions) {
             this.ignoreExceptions = shouldIgnoreExceptions;
             return this;
@@ -209,34 +226,39 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
 
         @Override
         public ConsoleAppender build() {
-            return new ConsoleAppender(name, layout, filter, getManager(target, follow, layout), ignoreExceptions, target);
+            if (follow && direct) {
+                throw new IllegalArgumentException("Cannot use both follow and direct on ConsoleAppender");
+            }
+            return new ConsoleAppender(name, layout, filter, getManager(target, follow, direct, layout), ignoreExceptions, target);
         }
     }
 
-    private static OutputStreamManager getDefaultManager(final Target target, final boolean follow,
+    private static OutputStreamManager getDefaultManager(final Target target, final boolean follow, final boolean direct,
             final Layout<? extends Serializable> layout) {
-        final OutputStream os = getOutputStream(follow, target);
+        final OutputStream os = getOutputStream(follow, direct, target);
 
         // LOG4J2-1176 DefaultConfiguration should not share OutputStreamManager instances to avoid memory leaks.
-        final String managerName = target.name() + '.' + follow + "-" + COUNT.get();
+        final String managerName = target.name() + '.' + follow + '.' + direct + "-" + COUNT.get();
         return OutputStreamManager.getManager(managerName, new FactoryData(os, managerName, layout), factory);
     }
 
-    private static OutputStreamManager getManager(final Target target, final boolean follow,
+    private static OutputStreamManager getManager(final Target target, final boolean follow, final boolean direct,
             final Layout<? extends Serializable> layout) {
-        final OutputStream os = getOutputStream(follow, target);
-        final String managerName = target.name() + '.' + follow;
+        final OutputStream os = getOutputStream(follow, direct, target);
+        final String managerName = target.name() + '.' + follow + '.' + direct;
         return OutputStreamManager.getManager(managerName, new FactoryData(os, managerName, layout), factory);
     }
 
-    private static OutputStream getOutputStream(final boolean follow, final Target target) {
+    private static OutputStream getOutputStream(final boolean follow, final boolean direct, final Target target) {
         final String enc = Charset.defaultCharset().name();
-        OutputStream outputStream = null;
+        OutputStream outputStream;
         try {
             // @formatter:off
             outputStream = target == Target.SYSTEM_OUT ?
-                follow ? new PrintStream(new SystemOutStream(), true, enc) : System.out :
-                follow ? new PrintStream(new SystemErrStream(), true, enc) : System.err;
+                direct ? new FileOutputStream(FileDescriptor.out) :
+                    (follow ? new PrintStream(new SystemOutStream(), true, enc) : System.out) :
+                direct ? new FileOutputStream(FileDescriptor.err) :
+                    (follow ? new PrintStream(new SystemErrStream(), true, enc) : System.err);
             // @formatter:on
             outputStream = new CloseShieldOutputStream(outputStream);
         } catch (final UnsupportedEncodingException ex) { // should never happen

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/50d0bf16/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FastConsoleAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FastConsoleAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FastConsoleAppender.java
deleted file mode 100644
index a7cd905..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FastConsoleAppender.java
+++ /dev/null
@@ -1,227 +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.appender;
-
-import java.io.FileDescriptor;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.logging.log4j.core.Filter;
-import org.apache.logging.log4j.core.Layout;
-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.PluginBuilderAttribute;
-import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
-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.CloseShieldOutputStream;
-
-/**
- * Appends log events to <code>System.out</code> or <code>System.err</code> using a layout specified by the user. The
- * default target is <code>System.out</code>.
- */
-@Plugin(name = "FastConsole", category = "Core", elementType = "appender", printObject = true)
-public final class FastConsoleAppender extends AbstractOutputStreamAppender<OutputStreamManager> {
-
-    private static ConsoleManagerFactory factory = new ConsoleManagerFactory();
-    private static final Target DEFAULT_TARGET = Target.SYSTEM_OUT;
-    private static final AtomicInteger COUNT = new AtomicInteger();
-
-    private final Target target;
-
-    /**
-     * Enumeration of console destinations.
-     */
-    public enum Target {
-        /** Standard output. */
-        SYSTEM_OUT,
-        /** Standard error output. */
-        SYSTEM_ERR
-    }
-
-    private FastConsoleAppender(final String name, final Layout<? extends Serializable> layout, final Filter filter,
-                                final OutputStreamManager manager, final boolean ignoreExceptions, Target target) {
-        super(name, layout, filter, ignoreExceptions, true, manager);
-        this.target = target;
-    }
-
-    /**
-     * Creates a Console Appender.
-     *
-     * @param layout The layout to use (required).
-     * @param filter The Filter or null.
-     * @param target The target (SYSTEM_OUT or SYSTEM_ERR). The default is SYSTEM_OUT.
-     * @param name The name of the Appender (required).
-     * @param ignoreExceptions If {@code "true"} (default) exceptions encountered when appending events are logged; otherwise they
-     *            are propagated to the caller.
-     * @return The ConsoleAppender.
-     */
-    @PluginFactory
-    public static FastConsoleAppender createAppender(
-            // @formatter:off
-            @PluginElement("Layout") Layout<? extends Serializable> layout,
-            @PluginElement("Filter") final Filter filter,
-            @PluginAttribute(value = "target") Target target,
-            @PluginAttribute("name") final String name,
-            @PluginAttribute(value = "ignoreExceptions", defaultBoolean = true) final boolean ignoreExceptions) {
-            // @formatter:on
-        if (name == null) {
-            LOGGER.error("No name provided for ConsoleAppender");
-            return null;
-        }
-        if (layout == null) {
-            layout = PatternLayout.createDefaultLayout();
-        }
-        target = target == null ? Target.SYSTEM_OUT : target;
-        return new FastConsoleAppender(name, layout, filter, getManager(target, layout), ignoreExceptions, target);
-    }
-
-    public static FastConsoleAppender createDefaultAppenderForLayout(final Layout<? extends Serializable> layout) {
-        // this method cannot use the builder class without introducing an infinite loop due to DefaultConfiguration
-        return new FastConsoleAppender("DefaultConsole-" + COUNT.incrementAndGet(), layout, null,
-                getDefaultManager(DEFAULT_TARGET, layout), true, DEFAULT_TARGET);
-    }
-
-    @PluginBuilderFactory
-    public static Builder newBuilder() {
-        return new Builder();
-    }
-
-    /**
-     * Builds ConsoleAppender instances.
-     */
-    public static class Builder implements org.apache.logging.log4j.core.util.Builder<FastConsoleAppender> {
-
-        @PluginElement("Layout")
-        @Required
-        private Layout<? extends Serializable> layout = PatternLayout.createDefaultLayout();
-
-        @PluginElement("Filter")
-        private Filter filter;
-
-        @PluginBuilderAttribute
-        @Required
-        private Target target = DEFAULT_TARGET;
-
-        @PluginBuilderAttribute
-        @Required
-        private String name;
-
-        @PluginBuilderAttribute
-        private boolean ignoreExceptions = true;
-
-        public Builder setLayout(final Layout<? extends Serializable> aLayout) {
-            this.layout = aLayout;
-            return this;
-        }
-
-        public Builder setFilter(final Filter aFilter) {
-            this.filter = aFilter;
-            return this;
-        }
-
-        public Builder setTarget(final Target aTarget) {
-            this.target = aTarget;
-            return this;
-        }
-
-        public Builder setName(final String aName) {
-            this.name = aName;
-            return this;
-        }
-
-        public Builder setIgnoreExceptions(final boolean shouldIgnoreExceptions) {
-            this.ignoreExceptions = shouldIgnoreExceptions;
-            return this;
-        }
-
-        @Override
-        public FastConsoleAppender build() {
-            return new FastConsoleAppender(name, layout, filter, getManager(target, layout), ignoreExceptions, target);
-        }
-    }
-
-    private static OutputStreamManager getDefaultManager(final Target target, final Layout<? extends Serializable> layout) {
-        final OutputStream os = getOutputStream(target);
-
-        // LOG4J2-1176 DefaultConfiguration should not share OutputStreamManager instances to avoid memory leaks.
-        final String managerName = target.name() + '-' + COUNT.get();
-        return OutputStreamManager.getManager(managerName, new FactoryData(os, managerName, layout), factory);
-    }
-
-    private static OutputStreamManager getManager(final Target target, final Layout<? extends Serializable> layout) {
-        final OutputStream os = getOutputStream(target);
-        final String managerName = target.name();
-        return OutputStreamManager.getManager(managerName, new FactoryData(os, managerName, layout), factory);
-    }
-
-    private static OutputStream getOutputStream(final Target target) {
-        OutputStream outputStream = target == Target.SYSTEM_OUT
-            ? new FileOutputStream(FileDescriptor.out)
-            : new FileOutputStream(FileDescriptor.err);
-        return new CloseShieldOutputStream(outputStream);
-    }
-
-    /**
-     * Data to pass to factory method.
-     */
-    private static class FactoryData {
-        private final OutputStream os;
-        private final String name;
-        private final Layout<? extends Serializable> layout;
-
-        /**
-         * Constructor.
-         *
-         * @param os The OutputStream.
-         * @param type The name of the target.
-         * @param layout A Serializable layout
-         */
-        public FactoryData(final OutputStream os, final String type, final Layout<? extends Serializable> layout) {
-            this.os = os;
-            this.name = type;
-            this.layout = layout;
-        }
-    }
-
-    /**
-     * Factory to create the Appender.
-     */
-    private static class ConsoleManagerFactory implements ManagerFactory<OutputStreamManager, FactoryData> {
-
-        /**
-         * Create an OutputStreamManager.
-         *
-         * @param name The name of the entity to manage.
-         * @param data The data required to create the entity.
-         * @return The OutputStreamManager
-         */
-        @Override
-        public OutputStreamManager createManager(final String name, final FactoryData data) {
-            return new OutputStreamManager(data.os, data.name, data.layout, true);
-        }
-    }
-
-    public Target getTarget() {
-        return target;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/50d0bf16/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
index 65b3e2e..78ca50e 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
@@ -16,13 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import static org.easymock.EasyMock.anyInt;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
 
@@ -41,6 +34,11 @@ import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import static org.easymock.EasyMock.anyInt;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.junit.Assert.*;
+
 
 /**
  *
@@ -100,7 +98,7 @@ public class ConsoleAppenderTest {
             mocks.replayAll();
             systemSetter.systemSet(psMock);
             final Layout<String> layout = PatternLayout.createLayout(null, null, null, null, null, false, false, null, null);
-            final ConsoleAppender app = ConsoleAppender.createAppender(layout, null, targetName, "Console", false,
+            final ConsoleAppender app = ConsoleAppender.createAppender(layout, null, targetName, "Console", false, false,
                     false);
             app.start();
             assertTrue("Appender did not start", app.isStarted());

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/50d0bf16/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
index a4ea02e..6d5e8b2 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/Log4j2AppenderComparisonBenchmark.java
@@ -57,14 +57,14 @@ public class Log4j2AppenderComparisonBenchmark {
     private Logger rafLogger;
     private Logger mmapLogger;
     private Logger consoleLogger;
-    private Logger fastConsoleLogger;
+    private Logger directConsoleLogger;
     private Logger noopLogger;
     private Logger rewriteLogger;
     private Appender fileAppender;
     private Appender rafAppender;
     private Appender mmapAppender;
     private Appender consoleAppender;
-    private Appender fastConsoleAppender;
+    private Appender directConsoleAppender;
     private Appender noopAppender;
     private Appender rewriteAppender;
 
@@ -104,7 +104,7 @@ public class Log4j2AppenderComparisonBenchmark {
         rafLogger = LogManager.getLogger("RAFLogger");
         mmapLogger = LogManager.getLogger("MMapLogger");
         consoleLogger = LogManager.getLogger("ConsoleLogger");
-        fastConsoleLogger = LogManager.getLogger("FastConsoleLogger");
+        directConsoleLogger = LogManager.getLogger("DirectConsoleLogger");
         noopLogger = LogManager.getLogger("NoopLogger");
         rewriteLogger = LogManager.getLogger("RewriteLogger");
 
@@ -112,7 +112,7 @@ public class Log4j2AppenderComparisonBenchmark {
         rafAppender = ((org.apache.logging.log4j.core.Logger) rafLogger).getAppenders().get("RandomAccessFile");
         mmapAppender = ((org.apache.logging.log4j.core.Logger) mmapLogger).getAppenders().get("MemoryMappedFile");
         consoleAppender = ((org.apache.logging.log4j.core.Logger) consoleLogger).getAppenders().get("Console");
-        fastConsoleAppender = ((org.apache.logging.log4j.core.Logger) fastConsoleLogger).getAppenders().get("FastConsole");
+        directConsoleAppender = ((org.apache.logging.log4j.core.Logger) directConsoleLogger).getAppenders().get("DirectConsole");
         noopAppender = ((org.apache.logging.log4j.core.Logger) noopLogger).getAppenders().get("NoOp");
         rewriteAppender = ((org.apache.logging.log4j.core.Logger) rewriteLogger).getAppenders().get("Rewrite");
     }
@@ -226,14 +226,14 @@ public class Log4j2AppenderComparisonBenchmark {
     @BenchmarkMode(Mode.Throughput)
     @OutputTimeUnit(TimeUnit.SECONDS)
     @Benchmark
-    public void end2endFastConsole() {
-        fastConsoleLogger.debug(MESSAGE);
+    public void end2endDirectConsole() {
+        directConsoleLogger.debug(MESSAGE);
     }
 
     @BenchmarkMode(Mode.Throughput)
     @OutputTimeUnit(TimeUnit.SECONDS)
     @Benchmark
-    public void appenderFastConsole() {
-        fastConsoleAppender.append(EVENT);
+    public void appenderDirectConsole() {
+        directConsoleAppender.append(EVENT);
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/50d0bf16/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/resources/log4j2-appenderComparison.xml b/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
index 8ad6327..70ce369 100644
--- a/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
+++ b/log4j-perf/src/main/resources/log4j2-appenderComparison.xml
@@ -21,9 +21,9 @@
         <Console name="Console" target="SYSTEM_OUT">
             <PatternLayout pattern="%d %p [%t] %c{1} %X{transactionId} - %m%n"/>
         </Console>
-        <FastConsole name="FastConsole" target="SYSTEM_OUT">
+        <Console name="DirectConsole" target="SYSTEM_OUT" direct="true">
             <PatternLayout pattern="%d %p [%t] %c{1} %X{transactionId} - %m%n"/>
-        </FastConsole>
+        </Console>
         <File name="File" fileName="target/testlog4j2.log" immediateFlush="false">
             <PatternLayout pattern="%d %p [%t] %c{1} %X{transactionId} - %m%n"/>
         </File>
@@ -58,8 +58,8 @@
         <Logger name="ConsoleLogger" level="debug" additivity="false">
             <AppenderRef ref="Console"/>
         </Logger>
-        <Logger name="FastConsoleLogger" level="debug" additivity="false">
-            <AppenderRef ref="FastConsole"/>
+        <Logger name="DirectConsoleLogger" level="debug" additivity="false">
+            <AppenderRef ref="DirectConsole"/>
         </Logger>
         <Logger name="NoopLogger" level="debug" additivity="false">
             <AppenderRef ref="NoOp"/>


[02/19] logging-log4j2 git commit: Merge branch 'master' into LOG4J2-1395

Posted by mi...@apache.org.
Merge branch 'master' into LOG4J2-1395


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

Branch: refs/heads/master
Commit: c0366fd3638d37584db9db2f8b8c3b4d9ff1f7de
Parents: 06c5546 4471c51
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon May 30 14:05:31 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon May 30 14:05:31 2016 +0200

----------------------------------------------------------------------
 BUILDING.txt                                    |  96 ++++++++++---------
 .../org/apache/logging/log4j/util/Unbox.java    |  16 ++--
 log4j-bom/.gitignore                            |   1 +
 .../log4j/core/layout/CsvLogEventLayout.java    |  35 +++----
 .../log4j/core/layout/CsvParameterLayout.java   |   6 +-
 pom.xml                                         |   4 +-
 src/changes/changes.xml                         |  11 +++
 src/site/resources/logo/logo-3d-green-bg-2.png  | Bin 0 -> 33619 bytes
 src/site/resources/logo/logo-3d-green-bg-2.xcf  | Bin 0 -> 58311 bytes
 src/site/resources/logo/logo-3d-green-bg.png    | Bin 0 -> 32865 bytes
 src/site/resources/logo/logo-3d-green-bg.xcf    | Bin 0 -> 58333 bytes
 src/site/resources/logo/logo-big-blue.png       | Bin 0 -> 30347 bytes
 src/site/resources/logo/logo-big-blue.xcf       | Bin 0 -> 55133 bytes
 src/site/resources/logo/logo-blue-web-r2.6.png  | Bin 0 -> 38268 bytes
 src/site/resources/logo/logo-blue-web-r2.6.xcf  | Bin 0 -> 64192 bytes
 src/site/resources/logo/logo-blue-web.png       | Bin 0 -> 35254 bytes
 src/site/resources/logo/logo-blue-web.xcf       | Bin 0 -> 63386 bytes
 .../resources/logo/logo-chocolate-swirl-2.png   | Bin 0 -> 31842 bytes
 .../resources/logo/logo-chocolate-swirl-2.xcf   | Bin 0 -> 58254 bytes
 .../resources/logo/logo-chocolate-swirl.png     | Bin 0 -> 34753 bytes
 .../resources/logo/logo-chocolate-swirl.xcf     | Bin 0 -> 64646 bytes
 src/site/resources/logo/logo-craters-2.png      | Bin 0 -> 30522 bytes
 src/site/resources/logo/logo-craters-2.xcf      | Bin 0 -> 58393 bytes
 src/site/resources/logo/logo-craters.png        | Bin 0 -> 32590 bytes
 src/site/resources/logo/logo-craters.xcf        | Bin 0 -> 58716 bytes
 src/site/resources/logo/logo-electric-blue.png  | Bin 0 -> 31853 bytes
 src/site/resources/logo/logo-electric-blue.xcf  | Bin 0 -> 58321 bytes
 src/site/resources/logo/logo-granite-2.png      | Bin 0 -> 33714 bytes
 src/site/resources/logo/logo-granite-2.xcf      | Bin 0 -> 58695 bytes
 src/site/resources/logo/logo-granite.png        | Bin 0 -> 31959 bytes
 src/site/resources/logo/logo-granite.xcf        | Bin 0 -> 58354 bytes
 src/site/resources/logo/logo-ice.png            | Bin 0 -> 33947 bytes
 src/site/resources/logo/logo-ice.xcf            | Bin 0 -> 64835 bytes
 src/site/resources/logo/logo-java-1.png         | Bin 0 -> 33698 bytes
 src/site/resources/logo/logo-java-1.xcf         | Bin 0 -> 58663 bytes
 src/site/resources/logo/logo-java-2.png         | Bin 0 -> 36999 bytes
 src/site/resources/logo/logo-java-2.xcf         | Bin 0 -> 64767 bytes
 src/site/resources/logo/logo-java-3.png         | Bin 0 -> 33016 bytes
 src/site/resources/logo/logo-java-3.xcf         | Bin 0 -> 58335 bytes
 src/site/resources/logo/logo-leather-2.png      | Bin 0 -> 33766 bytes
 src/site/resources/logo/logo-leather-2.xcf      | Bin 0 -> 58757 bytes
 src/site/resources/logo/logo-leather.png        | Bin 0 -> 32668 bytes
 src/site/resources/logo/logo-leather.xcf        | Bin 0 -> 58406 bytes
 src/site/resources/logo/logo-lightning.png      | Bin 0 -> 38593 bytes
 src/site/resources/logo/logo-lightning.xcf      | Bin 0 -> 64749 bytes
 src/site/resources/logo/logo-marble-1.png       | Bin 0 -> 33208 bytes
 src/site/resources/logo/logo-marble-1.xcf       | Bin 0 -> 64833 bytes
 src/site/resources/logo/logo-paper-1.png        | Bin 0 -> 33016 bytes
 src/site/resources/logo/logo-paper-1.xcf        | Bin 0 -> 58337 bytes
 src/site/resources/logo/logo-paper-2.png        | Bin 0 -> 33082 bytes
 src/site/resources/logo/logo-paper-2.xcf        | Bin 0 -> 58324 bytes
 src/site/resources/logo/logo-parque-1.png       | Bin 0 -> 33676 bytes
 src/site/resources/logo/logo-parque-1.xcf       | Bin 0 -> 58334 bytes
 src/site/resources/logo/logo-parque-2.png       | Bin 0 -> 32530 bytes
 src/site/resources/logo/logo-parque-2.xcf       | Bin 0 -> 58370 bytes
 src/site/resources/logo/logo-parque-3.png       | Bin 0 -> 32927 bytes
 src/site/resources/logo/logo-parque-3.xcf       | Bin 0 -> 58348 bytes
 src/site/resources/logo/logo-pastel-stuff-2.png | Bin 0 -> 33441 bytes
 src/site/resources/logo/logo-pastel-stuff-2.xcf | Bin 0 -> 58354 bytes
 src/site/resources/logo/logo-pastel-stuff-3.png | Bin 0 -> 33194 bytes
 src/site/resources/logo/logo-pastel-stuff-3.xcf | Bin 0 -> 58367 bytes
 src/site/resources/logo/logo-pastel-stuff.png   | Bin 0 -> 37102 bytes
 src/site/resources/logo/logo-pastel-stuff.xcf   | Bin 0 -> 64784 bytes
 src/site/resources/logo/logo-pine.png           | Bin 0 -> 28260 bytes
 src/site/resources/logo/logo-pine.xcf           | Bin 0 -> 61254 bytes
 src/site/resources/logo/logo-pool-bottom-bg.png | Bin 0 -> 31480 bytes
 src/site/resources/logo/logo-pool-bottom-bg.xcf | Bin 0 -> 58386 bytes
 src/site/resources/logo/logo-pool-bottom.png    | Bin 0 -> 33961 bytes
 src/site/resources/logo/logo-pool-bottom.xcf    | Bin 0 -> 64819 bytes
 src/site/resources/logo/logo-qbert.png          | Bin 0 -> 34606 bytes
 src/site/resources/logo/logo-qbert.xcf          | Bin 0 -> 64777 bytes
 src/site/resources/logo/logo-rain.png           | Bin 0 -> 34527 bytes
 src/site/resources/logo/logo-rain.xcf           | Bin 0 -> 64686 bytes
 src/site/resources/logo/logo-red-cubes.png      | Bin 0 -> 32485 bytes
 src/site/resources/logo/logo-red-cubes.xcf      | Bin 0 -> 58334 bytes
 src/site/resources/logo/logo-rocks.png          | Bin 0 -> 39238 bytes
 src/site/resources/logo/logo-rocks.xcf          | Bin 0 -> 64798 bytes
 src/site/resources/logo/logo-sky.png            | Bin 0 -> 33307 bytes
 src/site/resources/logo/logo-sky.xcf            | Bin 0 -> 64206 bytes
 src/site/resources/logo/logo-starfield.png      | Bin 0 -> 30603 bytes
 src/site/resources/logo/logo-starfield.xcf      | Bin 0 -> 56479 bytes
 src/site/resources/logo/logo-stone.png          | Bin 0 -> 39696 bytes
 src/site/resources/logo/logo-stone.xcf          | Bin 0 -> 64755 bytes
 src/site/resources/logo/logo-tree-bark.png      | Bin 0 -> 40313 bytes
 src/site/resources/logo/logo-tree-bark.xcf      | Bin 0 -> 64751 bytes
 src/site/resources/logo/logo-walnut.png         | Bin 0 -> 35644 bytes
 src/site/resources/logo/logo-walnut.xcf         | Bin 0 -> 64852 bytes
 src/site/resources/logo/logo-wood-1.png         | Bin 0 -> 34322 bytes
 src/site/resources/logo/logo-wood-1.xcf         | Bin 0 -> 64867 bytes
 src/site/resources/logo/logo-wood-2.png         | Bin 0 -> 33795 bytes
 src/site/resources/logo/logo-wood-2.xcf         | Bin 0 -> 64846 bytes
 src/site/resources/logo/logo-wood.png           | Bin 0 -> 37241 bytes
 src/site/resources/logo/logo-wood.xcf           | Bin 0 -> 64930 bytes
 93 files changed, 91 insertions(+), 78 deletions(-)
----------------------------------------------------------------------



[13/19] logging-log4j2 git commit: Clarify docs even more

Posted by mi...@apache.org.
Clarify docs even more


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

Branch: refs/heads/master
Commit: 349c5eb5d5318a7f34a7e91c9dbbe43a33c9f32d
Parents: ad0b66e
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon Jun 13 17:27:54 2016 +0200
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon Jun 13 17:27:54 2016 +0200

----------------------------------------------------------------------
 src/site/xdoc/manual/appenders.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/349c5eb5/src/site/xdoc/manual/appenders.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index 9e1c44a..f1924d3 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -196,7 +196,8 @@
               <td>Write directly to <code>java.io.FileDescriptor</code> and bypass <code>java.lang.System.out/.err</code>.
                 Can give up to 10x performance boost when the output is redirected to file or other process.
                 Cannot be used with Jansi on Windows. Cannot be used with <code>follow</code>. Output will not respect
-                <code>java.lang.System.setOut()/.setErr()</code>
+                <code>java.lang.System.setOut()/.setErr()</code> and may get intertwined with other output to
+                <code>java.lang.System.out/.err</code> in a multi-threaded application.
                 <i>New since 2.6.2. Be aware that this is a new addition, and although it has been
                   tested on several platforms, it does not have as much track record as using ConsoleAppender without it.</i>
               </td>