You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/03/17 23:43:31 UTC

[1/9] logging-log4j2 git commit: LOG4J2-1278 added logIfEnabled methods with unrolled varargs to ExtendedLogger

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


LOG4J2-1278 added logIfEnabled methods with unrolled varargs to ExtendedLogger


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 1c6030de2133974e5e648588563ec0a7ad8e8ea0
Parents: 2dfd2c3
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 18 00:16:23 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 18 00:16:23 2016 +1100

----------------------------------------------------------------------
 .../logging/log4j/spi/ExtendedLogger.java       | 180 ++++++++++++++++++-
 1 file changed, 176 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1c6030de/log4j-api/src/main/java/org/apache/logging/log4j/spi/ExtendedLogger.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/ExtendedLogger.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/ExtendedLogger.java
index 08b2e7e..fc3a76c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/ExtendedLogger.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/ExtendedLogger.java
@@ -304,16 +304,188 @@ public interface ExtendedLogger extends Logger {
     void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object... params);
 
     /**
-     * Always logs a message at the specified level. It is the responsibility of the caller to ensure the specified
-     * level is enabled.
+     * Logs a message if the specified level is active.
      *
      * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
      *            method when location information needs to be logged.
      * @param level The logging Level to check.
      * @param marker A Marker or null.
-     * @param message The Message.
-     * @param t the exception to log, including its stack trace.
+     * @param message The message format.
+     * @param p0 the message parameters
+     */
+    void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object p0);
+
+    /**
+     * Logs a message if the specified level is active.
+     *
+     * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
+     *            method when location information needs to be logged.
+     * @param level The logging Level to check.
+     * @param marker A Marker or null.
+     * @param message The message format.
+     * @param p0 the message parameters
+     * @param p1 the message parameters
+     */
+    void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object p0, Object p1);
+
+    /**
+     * Logs a message if the specified level is active.
+     *
+     * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
+     *            method when location information needs to be logged.
+     * @param level The logging Level to check.
+     * @param marker A Marker or null.
+     * @param message The message format.
+     * @param p0 the message parameters
+     * @param p1 the message parameters
+     * @param p2 the message parameters
+     */
+    void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object p0, Object p1, Object p2);
+
+    /**
+     * Logs a message if the specified level is active.
+     *
+     * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
+     *            method when location information needs to be logged.
+     * @param level The logging Level to check.
+     * @param marker A Marker or null.
+     * @param message The message format.
+     * @param p0 the message parameters
+     * @param p1 the message parameters
+     * @param p2 the message parameters
+     * @param p3 the message parameters
+     */
+    void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object p0, Object p1, Object p2,
+            Object p3);
+
+    /**
+     * Logs a message if the specified level is active.
+     *
+     * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
+     *            method when location information needs to be logged.
+     * @param level The logging Level to check.
+     * @param marker A Marker or null.
+     * @param message The message format.
+     * @param p0 the message parameters
+     * @param p1 the message parameters
+     * @param p2 the message parameters
+     * @param p3 the message parameters
+     * @param p4 the message parameters
+     */
+    void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object p0, Object p1, Object p2,
+            Object p3, Object p4);
+
+    /**
+     * Logs a message if the specified level is active.
+     *
+     * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
+     *            method when location information needs to be logged.
+     * @param level The logging Level to check.
+     * @param marker A Marker or null.
+     * @param message The message format.
+     * @param p0 the message parameters
+     * @param p1 the message parameters
+     * @param p2 the message parameters
+     * @param p3 the message parameters
+     * @param p4 the message parameters
+     * @param p5 the message parameters
      */
+    void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object p0, Object p1, Object p2,
+            Object p3, Object p4, Object p5);
+
+    /**
+     * Logs a message if the specified level is active.
+     *
+     * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
+     *            method when location information needs to be logged.
+     * @param level The logging Level to check.
+     * @param marker A Marker or null.
+     * @param message The message format.
+     * @param p0 the message parameters
+     * @param p1 the message parameters
+     * @param p2 the message parameters
+     * @param p3 the message parameters
+     * @param p4 the message parameters
+     * @param p5 the message parameters
+     * @param p6 the message parameters
+     */
+    void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object p0, Object p1, Object p2,
+            Object p3, Object p4, Object p5, Object p6);
+
+    /**
+     * Logs a message if the specified level is active.
+     *
+     * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
+     *            method when location information needs to be logged.
+     * @param level The logging Level to check.
+     * @param marker A Marker or null.
+     * @param message The message format.
+     * @param p0 the message parameters
+     * @param p1 the message parameters
+     * @param p2 the message parameters
+     * @param p3 the message parameters
+     * @param p4 the message parameters
+     * @param p5 the message parameters
+     * @param p6 the message parameters
+     * @param p7 the message parameters
+     */
+    void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object p0, Object p1, Object p2,
+            Object p3, Object p4, Object p5, Object p6, Object p7);
+
+    /**
+     * Logs a message if the specified level is active.
+     *
+     * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
+     *            method when location information needs to be logged.
+     * @param level The logging Level to check.
+     * @param marker A Marker or null.
+     * @param message The message format.
+     * @param p0 the message parameters
+     * @param p1 the message parameters
+     * @param p2 the message parameters
+     * @param p3 the message parameters
+     * @param p4 the message parameters
+     * @param p5 the message parameters
+     * @param p6 the message parameters
+     * @param p7 the message parameters
+     * @param p8 the message parameters
+     */
+    void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object p0, Object p1, Object p2,
+            Object p3, Object p4, Object p5, Object p6, Object p7, Object p8);
+
+    /**
+     * Logs a message if the specified level is active.
+     *
+     * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
+     *            method when location information needs to be logged.
+     * @param level The logging Level to check.
+     * @param marker A Marker or null.
+     * @param message The message format.
+     * @param p0 the message parameters
+     * @param p1 the message parameters
+     * @param p2 the message parameters
+     * @param p3 the message parameters
+     * @param p4 the message parameters
+     * @param p5 the message parameters
+     * @param p6 the message parameters
+     * @param p7 the message parameters
+     * @param p8 the message parameters
+     * @param p9 the message parameters
+     */
+    void logIfEnabled(String fqcn, Level level, Marker marker, String message, Object p0, Object p1, Object p2,
+            Object p3, Object p4, Object p5, Object p6, Object p7, Object p8, Object p9);
+
+        /**
+         * Always logs a message at the specified level. It is the responsibility of the caller to ensure the specified
+         * level is enabled.
+         *
+         * @param fqcn The fully qualified class name of the logger entry point, used to determine the caller class and
+         *            method when location information needs to be logged.
+         * @param level The logging Level to check.
+         * @param marker A Marker or null.
+         * @param message The Message.
+         * @param t the exception to log, including its stack trace.
+         */
     void logMessage(String fqcn, Level level, Marker marker, Message message, Throwable t);
 
     /**


[2/9] logging-log4j2 git commit: LOG4J2-1278 Added convenience method to LambdaUtil to evaluate lambda Objects (that implement Supplier)

Posted by rp...@apache.org.
LOG4J2-1278 Added convenience method to LambdaUtil to evaluate lambda Objects (that implement Supplier)


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: e08160eb23a8e9d8950ebe8feb65f2edd5d0a521
Parents: 1c6030d
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 18 00:22:35 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 18 00:22:35 2016 +1100

----------------------------------------------------------------------
 .../java/org/apache/logging/log4j/util/LambdaUtil.java   | 11 +++++++++++
 1 file changed, 11 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e08160eb/log4j-api/src/main/java/org/apache/logging/log4j/util/LambdaUtil.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/LambdaUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/LambdaUtil.java
index 33b0d2a..95dc265 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/LambdaUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/LambdaUtil.java
@@ -91,4 +91,15 @@ public final class LambdaUtil {
         final Object result = supplier.get();
         return result instanceof Message ? (Message) result : messageFactory.newMessage(result);
     }
+
+    /**
+     * If the specified object is a {@code Supplier} then returns the result of calling its {@link Supplier#get()}
+     * method, otherwise returns the specified object itself.
+     *
+     * @param maybe the object to evaluate if it is a lambda, or return as is if it is not
+     * @return the result of evaluating the specified lambda, or the specified object itself it not a lambda
+     */
+    public static Object maybeLambda(final Object maybe) {
+        return maybe instanceof Supplier<?> ? ((Supplier<?>) maybe).get() : maybe;
+    }
 }


[6/9] logging-log4j2 git commit: Allow SslConfigurationTest to pass when offline and DNS host name lookup fails.

Posted by rp...@apache.org.
Allow SslConfigurationTest to pass when offline and DNS host name lookup fails.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: a76c056be651e5f0ba1e5e072dd1d24a134d5818
Parents: 7a5f0e6
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 18 00:31:38 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 18 00:31:38 2016 +1100

----------------------------------------------------------------------
 .../core/net/ssl/SslConfigurationTest.java      | 27 +++++++++++++-------
 1 file changed, 18 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a76c056b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationTest.java
index 6e5773c..e830604 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationTest.java
@@ -18,6 +18,7 @@ package org.apache.logging.log4j.core.net.ssl;
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.net.UnknownHostException;
 
 import javax.net.ssl.SSLSocket;
 import javax.net.ssl.SSLSocketFactory;
@@ -40,9 +41,13 @@ public class SslConfigurationTest {
     public void emptyConfigurationHasDefaultTrustStore() throws IOException {
         final SslConfiguration sc = SslConfiguration.createSSLConfiguration(null, null, null);
         final SSLSocketFactory factory = sc.getSslSocketFactory();
-        try (final SSLSocket clientSocket = (SSLSocket) factory.createSocket(TLS_TEST_HOST, TLS_TEST_PORT)) {
-            Assert.assertNotNull(clientSocket);
-            clientSocket.close();
+        try {
+            try (final SSLSocket clientSocket = (SSLSocket) factory.createSocket(TLS_TEST_HOST, TLS_TEST_PORT)) {
+                Assert.assertNotNull(clientSocket);
+                clientSocket.close();
+            }
+        } catch (UnknownHostException offline) {
+            // this exception is thrown on Windows when offline
         }
     }
 
@@ -51,13 +56,17 @@ public class SslConfigurationTest {
         final TrustStoreConfiguration tsc = new TrustStoreConfiguration(TestConstants.TRUSTSTORE_FILE, null, null, null);
         final SslConfiguration sc = SslConfiguration.createSSLConfiguration(null, null, tsc);
         final SSLSocketFactory factory = sc.getSslSocketFactory();
-        try (final SSLSocket clientSocket = (SSLSocket) factory.createSocket(TLS_TEST_HOST, TLS_TEST_PORT)) {
-            try (final OutputStream os = clientSocket.getOutputStream()) {
-                os.write("GET config/login_verify2?".getBytes());
-                Assert.fail("Expected IOException");
-            } catch (final IOException e) {
-                // Expected, do nothing.
+        try {
+            try (final SSLSocket clientSocket = (SSLSocket) factory.createSocket(TLS_TEST_HOST, TLS_TEST_PORT)) {
+                try (final OutputStream os = clientSocket.getOutputStream()) {
+                    os.write("GET config/login_verify2?".getBytes());
+                    Assert.fail("Expected IOException");
+                } catch (final IOException e) {
+                    // Expected, do nothing.
+                }
             }
+        } catch (UnknownHostException offline) {
+            // this exception is thrown on Windows when offline
         }
     }
 


[8/9] logging-log4j2 git commit: LOG4J2-1321 Avoid allocating unnecessary temporary objects in PatternLayout's NamePatternConverter and ClassNamePatternConverter

Posted by rp...@apache.org.
LOG4J2-1321 Avoid allocating unnecessary temporary objects in PatternLayout's NamePatternConverter and ClassNamePatternConverter


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: e39a2da57c33b49b786756b0b588152d19afd47f
Parents: 6ba91a3
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 18 07:42:01 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 18 07:42:01 2016 +0900

----------------------------------------------------------------------
 .../core/pattern/ClassNamePatternConverter.java |  2 +-
 .../core/pattern/LoggerPatternConverter.java    |  2 +-
 .../log4j/core/pattern/NameAbbreviator.java     | 53 +++++++++++---------
 .../core/pattern/NamePatternConverter.java      |  7 +--
 .../log4j/core/pattern/NameAbbreviatorTest.java | 14 +++++-
 src/changes/changes.xml                         |  3 ++
 6 files changed, 52 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e39a2da5/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java
index a2e0f2a..30f580f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java
@@ -61,7 +61,7 @@ public final class ClassNamePatternConverter extends NamePatternConverter {
         if (element == null) {
             toAppendTo.append(NA);
         } else {
-            toAppendTo.append(abbreviate(element.getClassName()));
+            abbreviate(element.getClassName(), toAppendTo);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e39a2da5/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java
index 2b5651b..d6b43c0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java
@@ -61,6 +61,6 @@ public final class LoggerPatternConverter extends NamePatternConverter {
      */
     @Override
     public void format(final LogEvent event, final StringBuilder toAppendTo) {
-        toAppendTo.append(abbreviate(event.getLoggerName()));
+        abbreviate(event.getLoggerName(), toAppendTo);
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e39a2da5/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
index e145f81..1271ad5 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
@@ -127,10 +127,11 @@ public abstract class NameAbbreviator {
     /**
      * Abbreviates a name in a String.
      *
-     * @param buf       buffer, may not be null.
+     * @param original the text to abbreviate, may not be null.
+     * @param destination StringBuilder to write the result to
      * @return The abbreviated String.
      */
-    public abstract String abbreviate(final String buf);
+    public abstract void abbreviate(final String original, final StringBuilder destination);
 
     /**
      * Abbreviator that simply appends full name to buffer.
@@ -146,8 +147,8 @@ public abstract class NameAbbreviator {
          * {@inheritDoc}
          */
         @Override
-        public String abbreviate(final String buf) {
-            return buf;
+        public void abbreviate(final String original, final StringBuilder destination) {
+            destination.append(original);
         }
     }
 
@@ -172,25 +173,26 @@ public abstract class NameAbbreviator {
         /**
          * Abbreviate name.
          *
-         * @param buf The String to abbreviate.
+         * @param original The String to abbreviate.
+         * @param destination
          * @return the abbreviated String.
          */
         @Override
-        public String abbreviate(final String buf) {
+        public void abbreviate(final String original, final StringBuilder destination) {
 
             // We subtract 1 from 'len' when assigning to 'end' to avoid out of
             // bounds exception in return r.substring(end+1, len). This can happen if
             // precision is 1 and the category name ends with a dot.
-            int end = buf.length() - 1;
+            int end = original.length() - 1;
 
             for (int i = count; i > 0; i--) {
-                end = buf.lastIndexOf('.', end - 1);
+                end = original.lastIndexOf('.', end - 1);
                 if (end == -1) {
-                    return buf;
+                    destination.append(original);
+                    return;
                 }
             }
-
-            return buf.substring(end + 1);
+            destination.append(original, end + 1, original.length());
         }
     }
 
@@ -230,8 +232,15 @@ public abstract class NameAbbreviator {
          * @return starting index of next element.
          */
         public int abbreviate(final StringBuilder buf, final int startPos) {
-            int nextDot = buf.toString().indexOf('.', startPos);
-
+            final int start = (startPos < 0) ? 0 : startPos;
+            final int max = buf.length();
+            int nextDot = -1;
+            for (int i = start; i < max; i++) {
+                if (buf.charAt(i) == '.') {
+                    nextDot = i;
+                    break;
+                }
+            }
             if (nextDot != -1) {
                 if (nextDot - startPos > charCount) {
                     buf.delete(startPos + charCount, nextDot);
@@ -242,10 +251,8 @@ public abstract class NameAbbreviator {
                         nextDot++;
                     }
                 }
-
                 nextDot++;
             }
-
             return nextDot;
         }
     }
@@ -277,18 +284,19 @@ public abstract class NameAbbreviator {
         /**
          * Abbreviates name.
          *
-         * @param buf       buffer that abbreviated name is appended.
+         * @param original       buffer that abbreviated name is appended.
+         * @param destination
          */
         @Override
-        public String abbreviate(final String buf) {
+        public void abbreviate(final String original, final StringBuilder destination) {
             //
             //  all non-terminal patterns are executed once
             //
-            int pos = 0;
-            final StringBuilder sb = new StringBuilder(buf);
+            int pos = destination.length();
+            final int max = pos + original.length();
+            final StringBuilder sb = destination.append(original);//new StringBuilder(original);
 
-            for (int i = 0; i < fragments.length - 1 && pos < buf.length();
-                 i++) {
+            for (int i = 0; i < fragments.length - 1 && pos < original.length(); i++) {
                 pos = fragments[i].abbreviate(sb, pos);
             }
 
@@ -297,10 +305,9 @@ public abstract class NameAbbreviator {
             //
             final PatternAbbreviatorFragment terminalFragment = fragments[fragments.length - 1];
 
-            while (pos < buf.length() && pos >= 0) {
+            while (pos < max && pos >= 0) {
                 pos = terminalFragment.abbreviate(sb, pos);
             }
-            return sb.toString();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e39a2da5/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamePatternConverter.java
index b35c787..a33a9cc 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamePatternConverter.java
@@ -46,10 +46,11 @@ public abstract class NamePatternConverter extends LogEventPatternConverter {
     /**
      * Abbreviate name in string buffer.
      *
-     * @param buf       string buffer containing name.
+     * @param original string containing name.
+     * @param destination the StringBuilder to write to
      * @return The abbreviated name.
      */
-    protected final String abbreviate(final String buf) {
-        return abbreviator.abbreviate(buf);
+    protected final void abbreviate(final String original, final StringBuilder destination) {
+        abbreviator.abbreviate(original, destination);
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e39a2da5/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NameAbbreviatorTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NameAbbreviatorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NameAbbreviatorTest.java
index 441d7db..4b03076 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NameAbbreviatorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/NameAbbreviatorTest.java
@@ -58,8 +58,20 @@ public class NameAbbreviatorTest {
     @Test
     public void testAbbreviatorPatterns() throws Exception {
         final NameAbbreviator abbreviator = NameAbbreviator.getAbbreviator(this.pattern);
-        final String actual = abbreviator.abbreviate(this.getClass().getName());
+        final StringBuilder destination = new StringBuilder();
+        abbreviator.abbreviate(this.getClass().getName(), destination);
+        final String actual = destination.toString();
         assertEquals(expected, actual);
     }
 
+    @Test
+    public void testAbbreviatorPatternsAppend() throws Exception {
+        final NameAbbreviator abbreviator = NameAbbreviator.getAbbreviator(this.pattern);
+        final String PREFIX = "some random text";
+        final StringBuilder destination = new StringBuilder(PREFIX);
+        abbreviator.abbreviate(this.getClass().getName(), destination);
+        final String actual = destination.toString();
+        assertEquals(PREFIX + expected, actual);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e39a2da5/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3d56a5a..5357d96 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,6 +24,9 @@
   </properties>
   <body>
     <release version="2.6" date="2016-MM-DD" description="GA Release 2.6">
+      <action issue="LOG4J2-1321" dev="rpopma" type="update">
+        Avoid allocating unnecessary temporary objects in PatternLayout's NamePatternConverter and ClassNamePatternConverter.
+      </action>
       <action issue="LOG4J2-1309" dev="ggregory" type="fix">
         Configuration file error does not show cause exception.
       </action>


[7/9] logging-log4j2 git commit: LOG4J2-1278 experiment with more parameters in simple method call

Posted by rp...@apache.org.
LOG4J2-1278 experiment with more parameters in simple method call


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: a74a64ccc86b83a94d13ea3f9518fa41ae5b1fb7
Parents: a76c056
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 18 01:08:08 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 18 01:08:08 2016 +1100

----------------------------------------------------------------------
 .../logging/log4j/perf/jmh/VarargsBenchmark.java   | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a74a64cc/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/VarargsBenchmark.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/VarargsBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/VarargsBenchmark.java
index b9c910f..60d6abf 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/VarargsBenchmark.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/VarargsBenchmark.java
@@ -56,21 +56,26 @@ public class VarargsBenchmark {
     @BenchmarkMode(Mode.SampleTime)
     @OutputTimeUnit(TimeUnit.NANOSECONDS)
     public long varargParams() {
-        return varargMethod("example {} {} {}", "one", "two", "three", "four");
+        return varargMethod("example {} {} {} {} {} {} {} {} {} {}", "one", "two", "three", "four", "five",
+                "six", "seven", "eight", "nine", "ten");
     }
 
     @Benchmark
     @BenchmarkMode(Mode.SampleTime)
     @OutputTimeUnit(TimeUnit.NANOSECONDS)
     public long individualParams() {
-        return individualArgMethod("example {} {} {}", "one", "two", "three");
+        return individualArgMethod("example {} {} {} {} {} {} {} {} {} {}", "one", "two", "three", "four", "five",
+                "six", "seven", "eight", "nine", "ten");
     }
 
-    private long varargMethod(String string, String... params) {
-        return string.length() + params.length;
+    private long varargMethod(String string, String... p) {
+        return string.length() + p[0].length() + p[1].length() + p[2].length() + p[3].length() + p[4].length()
+                + p[5].length() + p[6].length() + p[7].length() + p[8].length() + p[9].length();
     }
 
-    private long individualArgMethod(String string, String param1, String param2, String param3) {
-        return string.length() + param1.length();
+    private long individualArgMethod(String string, String p1, String p2, String p3, String p4, String p5, String p6,
+            String p7, String p8, String p9, String p10) {
+        return string.length() + p1.length() + p2.length() + p3.length() + p4.length() + p5.length() + p6.length()
+                + p7.length() + p8.length() + p9.length() + p10.length();
     }
 }


[4/9] logging-log4j2 git commit: LOG4J2-1278 added test for more than one lambda expression parameter

Posted by rp...@apache.org.
LOG4J2-1278 added test for more than one lambda expression parameter


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 3b7299ae4b2b91e32f1cdf048a35dda0aaac1e75
Parents: 3e6d0ad
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 18 00:24:55 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 18 00:24:55 2016 +1100

----------------------------------------------------------------------
 .../apache/logging/log4j/LambdaLoggerTest.java    | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3b7299ae/log4j-api/src/test/java/org/apache/logging/log4j/LambdaLoggerTest.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/LambdaLoggerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/LambdaLoggerTest.java
index 0385c93..c9f8e9a 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/LambdaLoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/LambdaLoggerTest.java
@@ -200,6 +200,7 @@ public class LambdaLoggerTest {
     }
 
     final MySupplier supplier = new MySupplier();
+    final MySupplier supplier2 = new MySupplier();
 
     @Before
     public void beforeEachTest() {
@@ -670,6 +671,23 @@ public class LambdaLoggerTest {
     }
 
     @Test
+    public void testFatalStringParam2Suppliers() {
+        logger2.disable().fatal("abc {}{}", supplier, supplier2);
+        assertTrue(logger2.list.isEmpty());
+        assertFalse(supplier.invoked);
+        assertFalse(supplier2.invoked);
+
+        logger2.enable().fatal("abc {}{}", supplier, supplier2);
+        assertEquals(1, logger2.list.size());
+        assertTrue(supplier.invoked);
+        assertTrue(supplier2.invoked);
+
+        final LogEvent event = logger2.list.get(0);
+        assertEquals(Level.FATAL, event.level);
+        assertEquals("abc HiHi", event.message.getFormattedMessage());
+    }
+
+    @Test
     public void testFatalMarkerStringParamSupplier() {
         logger2.disable().fatal(marker, "abc {}", supplier);
         assertTrue(logger2.list.isEmpty());


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

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


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: a74bb8fd42dc998b1a72ea62da0300e064f390b0
Parents: a74a64c e39a2da
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 18 07:42:44 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 18 07:42:44 2016 +0900

----------------------------------------------------------------------
 .../core/pattern/ClassNamePatternConverter.java |  2 +-
 .../core/pattern/LoggerPatternConverter.java    |  2 +-
 .../log4j/core/pattern/NameAbbreviator.java     | 53 +++++++++++---------
 .../core/pattern/NamePatternConverter.java      |  7 +--
 .../log4j/core/pattern/NameAbbreviatorTest.java | 14 +++++-
 src/changes/changes.xml                         |  3 ++
 6 files changed, 52 insertions(+), 29 deletions(-)
----------------------------------------------------------------------



[3/9] logging-log4j2 git commit: LOG4J2-1278 simplify and leverage the new isEnabled and logIfEnabled methods with unrolled varargs. Also support mixing lambdas with object parameters.

Posted by rp...@apache.org.
LOG4J2-1278 simplify and leverage the new isEnabled and logIfEnabled methods with unrolled varargs. Also support mixing lambdas with object parameters.


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 3e6d0ad492e28ca39e37344df4e5eb008ba6bea8
Parents: e08160e
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 18 00:24:08 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 18 00:24:08 2016 +1100

----------------------------------------------------------------------
 .../logging/log4j/spi/AbstractLogger.java       | 988 +++++++------------
 1 file changed, 351 insertions(+), 637 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3e6d0ad4/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
index c7d8156..1be9d87 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
@@ -360,183 +360,122 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     @Override
     public void debug(final Marker marker, final String message, final Object p0) {
-        if (isEnabled(Level.DEBUG, marker, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.DEBUG, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0);
     }
 
     @Override
     public void debug(final Marker marker, final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.DEBUG, marker, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.DEBUG, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1);
     }
 
     @Override
     public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.DEBUG, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.DEBUG, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2);
     }
 
     @Override
     public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3) {
-        if (isEnabled(Level.DEBUG, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.DEBUG, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3);
     }
 
     @Override
     public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4) {
-        if (isEnabled(Level.DEBUG, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.DEBUG, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5) {
-        if (isEnabled(Level.DEBUG, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.DEBUG, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6) {
-        if (isEnabled(Level.DEBUG, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.DEBUG, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7) {
-        if (isEnabled(Level.DEBUG, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.DEBUG, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8) {
-        if (isEnabled(Level.DEBUG, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.DEBUG, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.DEBUG, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.DEBUG, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
     public void debug(final String message, final Object p0) {
-        if (isEnabled(Level.DEBUG, null, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.DEBUG, null, msg, msg.getThrowable());
-        }
-
+        logIfEnabled(FQCN, Level.DEBUG, null, message, p0);
     }
 
     @Override
     public void debug(final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.DEBUG, null, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.DEBUG, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1);
     }
 
     @Override
     public void debug(final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.DEBUG, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.DEBUG, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2);
     }
 
     @Override
     public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
-        if (isEnabled(Level.DEBUG, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.DEBUG, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3);
     }
 
     @Override
     public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4) {
-        if (isEnabled(Level.DEBUG, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.DEBUG, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5) {
-        if (isEnabled(Level.DEBUG, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.DEBUG, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6) {
-        if (isEnabled(Level.DEBUG, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.DEBUG, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6,
             final Object p7) {
-        if (isEnabled(Level.DEBUG, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.DEBUG, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6,
             final Object p7, final Object p8) {
-        if (isEnabled(Level.DEBUG, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.DEBUG, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6,
             final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.DEBUG, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.DEBUG, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     /**
@@ -813,183 +752,119 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     @Override
     public void error(final Marker marker, final String message, final Object p0) {
-        if (isEnabled(Level.ERROR, marker, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.ERROR, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, marker, message, p0);
     }
 
     @Override
     public void error(final Marker marker, final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.ERROR, marker, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.ERROR, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1);
     }
 
     @Override
     public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.ERROR, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.ERROR, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2);
     }
 
     @Override
     public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3) {
-        if (isEnabled(Level.ERROR, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.ERROR, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3);
     }
 
     @Override
     public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4) {
-        if (isEnabled(Level.ERROR, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.ERROR, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5) {
-        if (isEnabled(Level.ERROR, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.ERROR, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6) {
-        if (isEnabled(Level.ERROR, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.ERROR, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7) {
-        if (isEnabled(Level.ERROR, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.ERROR, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8) {
-        if (isEnabled(Level.ERROR, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.ERROR, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.ERROR, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.ERROR, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
     public void error(final String message, final Object p0) {
-        if (isEnabled(Level.ERROR, null, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.ERROR, null, msg, msg.getThrowable());
-        }
-
+        logIfEnabled(FQCN, Level.ERROR, null, message, p0);
     }
 
     @Override
     public void error(final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.ERROR, null, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.ERROR, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1);
     }
 
     @Override
     public void error(final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.ERROR, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.ERROR, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2);
     }
 
     @Override
     public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
-        if (isEnabled(Level.ERROR, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.ERROR, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3);
     }
 
     @Override
     public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4) {
-        if (isEnabled(Level.ERROR, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.ERROR, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5) {
-        if (isEnabled(Level.ERROR, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.ERROR, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6) {
-        if (isEnabled(Level.ERROR, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.ERROR, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7) {
-        if (isEnabled(Level.ERROR, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.ERROR, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7) {
+        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7, final Object p8) {
-        if (isEnabled(Level.ERROR, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.ERROR, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
+        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.ERROR, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.ERROR, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8, final Object p9) {
+        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
@@ -1164,183 +1039,118 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     @Override
     public void fatal(final Marker marker, final String message, final Object p0) {
-        if (isEnabled(Level.FATAL, marker, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.FATAL, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, marker, message, p0);
     }
 
     @Override
     public void fatal(final Marker marker, final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.FATAL, marker, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.FATAL, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1);
     }
 
     @Override
     public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.FATAL, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.FATAL, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2);
     }
 
     @Override
     public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3) {
-        if (isEnabled(Level.FATAL, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.FATAL, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3);
     }
 
     @Override
     public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4) {
-        if (isEnabled(Level.FATAL, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.FATAL, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5) {
-        if (isEnabled(Level.FATAL, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.FATAL, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
-            final Object p6) {
-        if (isEnabled(Level.FATAL, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.FATAL, marker, msg, msg.getThrowable());
-        }
+            final Object p3, final Object p4, final Object p5, final Object p6) {
+        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
-            final Object p6, final Object p7) {
-        if (isEnabled(Level.FATAL, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.FATAL, marker, msg, msg.getThrowable());
-        }
+            final Object p3, final Object p4, final Object p5, final Object p6, final Object p7) {
+        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8) {
-        if (isEnabled(Level.FATAL, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.FATAL, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.FATAL, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.FATAL, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
     public void fatal(final String message, final Object p0) {
-        if (isEnabled(Level.FATAL, null, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.FATAL, null, msg, msg.getThrowable());
-        }
-
+        logIfEnabled(FQCN, Level.FATAL, null, message, p0);
     }
 
     @Override
     public void fatal(final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.FATAL, null, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.FATAL, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1);
     }
 
     @Override
     public void fatal(final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.FATAL, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.FATAL, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2);
     }
 
     @Override
     public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
-        if (isEnabled(Level.FATAL, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.FATAL, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3);
     }
 
     @Override
     public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4) {
-        if (isEnabled(Level.FATAL, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.FATAL, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5) {
-        if (isEnabled(Level.FATAL, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.FATAL, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6) {
-        if (isEnabled(Level.FATAL, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.FATAL, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7) {
-        if (isEnabled(Level.FATAL, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.FATAL, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7) {
+        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7, final Object p8) {
-        if (isEnabled(Level.FATAL, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.FATAL, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
+        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6,
             final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.FATAL, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.FATAL, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
@@ -1475,183 +1285,120 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     @Override
     public void info(final Marker marker, final String message, final Object p0) {
-        if (isEnabled(Level.INFO, marker, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.INFO, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, marker, message, p0);
     }
 
     @Override
     public void info(final Marker marker, final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.INFO, marker, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.INFO, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1);
     }
 
     @Override
     public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.INFO, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.INFO, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2);
     }
 
     @Override
     public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3) {
-        if (isEnabled(Level.INFO, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.INFO, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3);
     }
 
     @Override
     public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4) {
-        if (isEnabled(Level.INFO, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.INFO, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5) {
-        if (isEnabled(Level.INFO, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.INFO, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
-            final Object p6) {
-        if (isEnabled(Level.INFO, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.INFO, marker, msg, msg.getThrowable());
-        }
+            final Object p3, final Object p4, final Object p5, final Object p6) {
+        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
-            final Object p6, final Object p7) {
-        if (isEnabled(Level.INFO, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.INFO, marker, msg, msg.getThrowable());
-        }
+            final Object p3, final Object p4, final Object p5, final Object p6, final Object p7) {
+        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8) {
-        if (isEnabled(Level.INFO, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.INFO, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.INFO, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.INFO, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
     public void info(final String message, final Object p0) {
-        if (isEnabled(Level.INFO, null, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.INFO, null, msg, msg.getThrowable());
-        }
-
+        logIfEnabled(FQCN, Level.INFO, null, message, p0);
     }
 
     @Override
     public void info(final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.INFO, null, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.INFO, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1);
     }
 
     @Override
     public void info(final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.INFO, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.INFO, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2);
     }
 
     @Override
     public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
-        if (isEnabled(Level.INFO, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.INFO, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3);
     }
 
     @Override
     public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4) {
-        if (isEnabled(Level.INFO, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.INFO, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5) {
-        if (isEnabled(Level.INFO, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.INFO, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6) {
-        if (isEnabled(Level.INFO, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.INFO, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6,
             final Object p7) {
-        if (isEnabled(Level.INFO, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.INFO, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6,
             final Object p7, final Object p8) {
-        if (isEnabled(Level.INFO, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.INFO, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6,
             final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.INFO, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.INFO, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
@@ -1848,183 +1595,119 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     @Override
     public void log(final Level level, final Marker marker, final String message, final Object p0) {
-        if (isEnabled(level, marker, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, level, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, marker, message, p0);
     }
 
     @Override
     public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1) {
-        if (isEnabled(level, marker, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, level, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, marker, message, p0, p1);
     }
 
     @Override
-    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(level, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, level, marker, msg, msg.getThrowable());
-        }
+    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
+            final Object p2) {
+        logIfEnabled(FQCN, level, marker, message, p0, p1, p2);
     }
 
     @Override
-    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3) {
-        if (isEnabled(level, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, level, marker, msg, msg.getThrowable());
-        }
+    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
+            final Object p2, final Object p3) {
+        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3);
     }
 
     @Override
-    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4) {
-        if (isEnabled(level, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, level, marker, msg, msg.getThrowable());
-        }
+    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
+            final Object p2, final Object p3, final Object p4) {
+        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4);
     }
 
     @Override
-    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5) {
-        if (isEnabled(level, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, level, marker, msg, msg.getThrowable());
-        }
+    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
+            final Object p2, final Object p3, final Object p4, final Object p5) {
+        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
-    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
-            final Object p6) {
-        if (isEnabled(level, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, level, marker, msg, msg.getThrowable());
-        }
+    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
+            final Object p2, final Object p3, final Object p4, final Object p5, final Object p6) {
+        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
-    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
+    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
+            final Object p2, final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7) {
-        if (isEnabled(level, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, level, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
-    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
+    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
+            final Object p2, final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8) {
-        if (isEnabled(level, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, level, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
-    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
+    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
+            final Object p2, final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(level, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, level, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
     public void log(final Level level, final String message, final Object p0) {
-        if (isEnabled(level, null, message, p0)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, level, null, msg, msg.getThrowable());
-        }
-
+        logIfEnabled(FQCN, level, null, message, p0);
     }
 
     @Override
     public void log(final Level level, final String message, final Object p0, final Object p1) {
-        if (isEnabled(level, null, message, p0, p1)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, level, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, null, message, p0, p1);
     }
 
     @Override
     public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(level, null, message, p0, p1, p2)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, level, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, null, message, p0, p1, p2);
     }
 
     @Override
     public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
-        if (isEnabled(level, null, message, p0, p1, p2, p3)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, level, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3);
     }
 
     @Override
     public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4) {
-        if (isEnabled(level, null, message, p0, p1, p2, p3, p4)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, level, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5) {
-        if (isEnabled(level, null, message, p0, p1, p2, p3, p4, p5)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, level, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6) {
-        if (isEnabled(level, null, message, p0, p1, p2, p3, p4, p5, p6)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, level, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7) {
-        if (isEnabled(level, null, message, p0, p1, p2, p3, p4, p5, p6, p7)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, level, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7) {
+        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7, final Object p8) {
-        if (isEnabled(level, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, level, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
+        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(level, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, level, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8, final Object p9) {
+        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
@@ -2084,6 +1767,90 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     @Override
     public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0) {
+        if (isEnabled(level, marker, message, p0)) {
+            logMessage(fqcn, level, marker, message, p0);
+        }
+    }
+
+    @Override
+    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1) {
+        if (isEnabled(level, marker, message, p0, p1)) {
+            logMessage(fqcn, level, marker, message, p0, p1);
+        }
+    }
+
+    @Override
+    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2) {
+        if (isEnabled(level, marker, message, p0, p1, p2)) {
+            logMessage(fqcn, level, marker, message, p0, p1, p2);
+        }
+    }
+
+    @Override
+    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3) {
+        if (isEnabled(level, marker, message, p0, p1, p2, p3)) {
+            logMessage(fqcn, level, marker, message, p0, p1, p2, p3);
+        }
+    }
+
+    @Override
+    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4) {
+        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4)) {
+            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4);
+        }
+    }
+
+    @Override
+    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5) {
+        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5)) {
+            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4, p5);
+        }
+    }
+
+    @Override
+    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
+            final Object p6) {
+        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6)) {
+            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4, p5, p6);
+        }
+    }
+
+    @Override
+    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
+            final Object p6, final Object p7) {
+        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7)) {
+            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
+        }
+    }
+
+    @Override
+    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
+            final Object p6, final Object p7, final Object p8) {
+        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8)) {
+            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
+        }
+    }
+
+    @Override
+    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
+            final Object p6, final Object p7, final Object p8, final Object p9) {
+        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) {
+            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
+        }
+    }
+
+    @Override
+    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
             final Throwable t) {
         if (isEnabled(level, marker, message, t)) {
             logMessage(fqcn, level, marker, message, t);
@@ -2124,13 +1891,92 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
     }
 
     protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0) {
+        final Message msg = newMessage(message, LambdaUtil.maybeLambda(p0));
+        logMessage(fqcn, level, marker, msg, msg.getThrowable());
+    }
+
+    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1) {
+        final Message msg = newMessage(message, LambdaUtil.maybeLambda(p0), LambdaUtil.maybeLambda(p1));
+        logMessage(fqcn, level, marker, msg, msg.getThrowable());
+    }
+
+    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2) {
+        final Message msg = newMessage(message, LambdaUtil.maybeLambda(p0), LambdaUtil.maybeLambda(p1),
+                LambdaUtil.maybeLambda(p2));
+        logMessage(fqcn, level, marker, msg, msg.getThrowable());
+    }
+
+    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3) {
+        final Message msg = newMessage(message, LambdaUtil.maybeLambda(p0), LambdaUtil.maybeLambda(p1),
+                LambdaUtil.maybeLambda(p2), LambdaUtil.maybeLambda(p3));
+        logMessage(fqcn, level, marker, msg, msg.getThrowable());
+    }
+
+    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4) {
+        final Message msg = newMessage(message, LambdaUtil.maybeLambda(p0), LambdaUtil.maybeLambda(p1),
+                LambdaUtil.maybeLambda(p2), LambdaUtil.maybeLambda(p3), LambdaUtil.maybeLambda(p4));
+        logMessage(fqcn, level, marker, msg, msg.getThrowable());
+    }
+
+    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5) {
+        final Message msg = newMessage(message, LambdaUtil.maybeLambda(p0), LambdaUtil.maybeLambda(p1),
+                LambdaUtil.maybeLambda(p2), LambdaUtil.maybeLambda(p3), LambdaUtil.maybeLambda(p4),
+                LambdaUtil.maybeLambda(p5));
+        logMessage(fqcn, level, marker, msg, msg.getThrowable());
+    }
+
+    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
+            final Object p6) {
+        final Message msg = newMessage(message, LambdaUtil.maybeLambda(p0), LambdaUtil.maybeLambda(p1),
+                LambdaUtil.maybeLambda(p2), LambdaUtil.maybeLambda(p3), LambdaUtil.maybeLambda(p4),
+                LambdaUtil.maybeLambda(p5), LambdaUtil.maybeLambda(p6));
+        logMessage(fqcn, level, marker, msg, msg.getThrowable());
+    }
+
+    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
+            final Object p6, final Object p7) {
+        final Message msg = newMessage(message, LambdaUtil.maybeLambda(p0), LambdaUtil.maybeLambda(p1),
+                LambdaUtil.maybeLambda(p2), LambdaUtil.maybeLambda(p3), LambdaUtil.maybeLambda(p4),
+                LambdaUtil.maybeLambda(p5), LambdaUtil.maybeLambda(p6), LambdaUtil.maybeLambda(p7));
+        logMessage(fqcn, level, marker, msg, msg.getThrowable());
+    }
+
+    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
+            final Object p6, final Object p7, final Object p8) {
+        final Message msg = newMessage(message, LambdaUtil.maybeLambda(p0), LambdaUtil.maybeLambda(p1),
+                LambdaUtil.maybeLambda(p2), LambdaUtil.maybeLambda(p3), LambdaUtil.maybeLambda(p4),
+                LambdaUtil.maybeLambda(p5), LambdaUtil.maybeLambda(p6), LambdaUtil.maybeLambda(p7),
+                LambdaUtil.maybeLambda(p8));
+        logMessage(fqcn, level, marker, msg, msg.getThrowable());
+    }
+
+    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
+            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
+            final Object p6, final Object p7, final Object p8, final Object p9) {
+        final Message msg = newMessage(message, LambdaUtil.maybeLambda(p0), LambdaUtil.maybeLambda(p1),
+                LambdaUtil.maybeLambda(p2), LambdaUtil.maybeLambda(p3), LambdaUtil.maybeLambda(p4),
+                LambdaUtil.maybeLambda(p5), LambdaUtil.maybeLambda(p6), LambdaUtil.maybeLambda(p7),
+                LambdaUtil.maybeLambda(p8), LambdaUtil.maybeLambda(p9));
+        logMessage(fqcn, level, marker, msg, msg.getThrowable());
+    }
+
+    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
             final Supplier<?>... paramSuppliers) {
         final Message msg = messageFactory.newMessage(message, LambdaUtil.getAll(paramSuppliers));
         logMessage(fqcn, level, marker, msg, msg.getThrowable());
     }
 
     private Message newMessage(final String message, final Object p0) {
-        final MessageFactory factory = getMessageFactory();
+        final MessageFactory factory = messageFactory;
         if (factory instanceof MessageFactory2) {
             return ((MessageFactory2) factory).newMessage(message, p0);
         } else {
@@ -2139,7 +1985,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
     }
 
     private Message newMessage(final String message, final Object p0, final Object p1) {
-        final MessageFactory factory = getMessageFactory();
+        final MessageFactory factory = messageFactory;
         if (factory instanceof MessageFactory2) {
             return ((MessageFactory2) factory).newMessage(message, p0, p1);
         } else {
@@ -2148,7 +1994,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
     }
 
     private Message newMessage(final String message, final Object p0, final Object p1, final Object p2) {
-        final MessageFactory factory = getMessageFactory();
+        final MessageFactory factory = messageFactory;
         if (factory instanceof MessageFactory2) {
             return ((MessageFactory2) factory).newMessage(message, p0, p1, p2);
         } else {
@@ -2157,7 +2003,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
     }
 
     private Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
-        final MessageFactory factory = getMessageFactory();
+        final MessageFactory factory = messageFactory;
         if (factory instanceof MessageFactory2) {
             return ((MessageFactory2) factory).newMessage(message, p0, p1, p2, p3);
         } else {
@@ -2167,7 +2013,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     private Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4) {
-        final MessageFactory factory = getMessageFactory();
+        final MessageFactory factory = messageFactory;
         if (factory instanceof MessageFactory2) {
             return ((MessageFactory2) factory).newMessage(message, p0, p1, p2, p3, p4);
         } else {
@@ -2177,7 +2023,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     private Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5) {
-        final MessageFactory factory = getMessageFactory();
+        final MessageFactory factory = messageFactory;
         if (factory instanceof MessageFactory2) {
             return ((MessageFactory2) factory).newMessage(message, p0, p1, p2, p3, p4, p5);
         } else {
@@ -2187,7 +2033,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     private Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6) {
-        final MessageFactory factory = getMessageFactory();
+        final MessageFactory factory = messageFactory;
         if (factory instanceof MessageFactory2) {
             return ((MessageFactory2) factory).newMessage(message, p0, p1, p2, p3, p4, p5, p6);
         } else {
@@ -2197,7 +2043,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     private Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6, final Object p7) {
-        final MessageFactory factory = getMessageFactory();
+        final MessageFactory factory = messageFactory;
         if (factory instanceof MessageFactory2) {
             return ((MessageFactory2) factory).newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
         } else {
@@ -2207,7 +2053,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     private Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
-        final MessageFactory factory = getMessageFactory();
+        final MessageFactory factory = messageFactory;
         if (factory instanceof MessageFactory2) {
             return ((MessageFactory2) factory).newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
         } else {
@@ -2217,7 +2063,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     private Message newMessage(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6, final Object p7, final Object p8, final Object p9) {
-        final MessageFactory factory = getMessageFactory();
+        final MessageFactory factory = messageFactory;
         if (factory instanceof MessageFactory2) {
             return ((MessageFactory2) factory).newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
         } else {
@@ -2393,183 +2239,117 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     @Override
     public void trace(final Marker marker, final String message, final Object p0) {
-        if (isEnabled(Level.TRACE, marker, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.TRACE, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, marker, message, p0);
     }
 
     @Override
     public void trace(final Marker marker, final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.TRACE, marker, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.TRACE, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1);
     }
 
     @Override
     public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.TRACE, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.TRACE, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2);
     }
 
     @Override
     public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3) {
-        if (isEnabled(Level.TRACE, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.TRACE, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3);
     }
 
     @Override
     public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4) {
-        if (isEnabled(Level.TRACE, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.TRACE, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5) {
-        if (isEnabled(Level.TRACE, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.TRACE, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
-            final Object p6) {
-        if (isEnabled(Level.TRACE, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.TRACE, marker, msg, msg.getThrowable());
-        }
+            final Object p3, final Object p4, final Object p5, final Object p6) {
+        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
-            final Object p6, final Object p7) {
-        if (isEnabled(Level.TRACE, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.TRACE, marker, msg, msg.getThrowable());
-        }
+            final Object p3, final Object p4, final Object p5, final Object p6, final Object p7) {
+        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8) {
-        if (isEnabled(Level.TRACE, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.TRACE, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.TRACE, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.TRACE, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
     public void trace(final String message, final Object p0) {
-        if (isEnabled(Level.TRACE, null, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.TRACE, null, msg, msg.getThrowable());
-        }
-
+        logIfEnabled(FQCN, Level.TRACE, null, message, p0);
     }
 
     @Override
     public void trace(final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.TRACE, null, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.TRACE, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1);
     }
 
     @Override
     public void trace(final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.TRACE, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.TRACE, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2);
     }
 
     @Override
     public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
-        if (isEnabled(Level.TRACE, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.TRACE, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3);
     }
 
     @Override
     public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4) {
-        if (isEnabled(Level.TRACE, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.TRACE, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5) {
-        if (isEnabled(Level.TRACE, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.TRACE, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6) {
-        if (isEnabled(Level.TRACE, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.TRACE, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7) {
-        if (isEnabled(Level.TRACE, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.TRACE, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7) {
+        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7, final Object p8) {
-        if (isEnabled(Level.TRACE, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.TRACE, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
+        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.TRACE, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.TRACE, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8, final Object p9) {
+        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
@@ -2760,182 +2540,116 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
 
     @Override
     public void warn(final Marker marker, final String message, final Object p0) {
-        if (isEnabled(Level.WARN, marker, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.WARN, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, marker, message, p0);
     }
 
     @Override
     public void warn(final Marker marker, final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.WARN, marker, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.WARN, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1);
     }
 
     @Override
     public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.WARN, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.WARN, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2);
     }
 
     @Override
     public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3) {
-        if (isEnabled(Level.WARN, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.WARN, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3);
     }
 
     @Override
     public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4) {
-        if (isEnabled(Level.WARN, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.WARN, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5) {
-        if (isEnabled(Level.WARN, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.WARN, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
-            final Object p6) {
-        if (isEnabled(Level.WARN, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.WARN, marker, msg, msg.getThrowable());
-        }
+            final Object p3, final Object p4, final Object p5, final Object p6) {
+        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
-            final Object p6, final Object p7) {
-        if (isEnabled(Level.WARN, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.WARN, marker, msg, msg.getThrowable());
-        }
+            final Object p3, final Object p4, final Object p5, final Object p6, final Object p7) {
+        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
-            final Object p3, final Object p4, final Object p5,
-            final Object p6, final Object p7, final Object p8) {
-        if (isEnabled(Level.WARN, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.WARN, marker, msg, msg.getThrowable());
-        }
+            final Object p3, final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
+        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
             final Object p3, final Object p4, final Object p5,
             final Object p6, final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.WARN, marker, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.WARN, marker, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 
     @Override
     public void warn(final String message, final Object p0) {
-        if (isEnabled(Level.WARN, null, message)) {
-            final Message msg = newMessage(message, p0);
-            logMessage(FQCN, Level.WARN, null, msg, msg.getThrowable());
-        }
-
+        logIfEnabled(FQCN, Level.WARN, null, message, p0);
     }
 
     @Override
     public void warn(final String message, final Object p0, final Object p1) {
-        if (isEnabled(Level.WARN, null, message)) {
-            final Message msg = newMessage(message, p0, p1);
-            logMessage(FQCN, Level.WARN, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1);
     }
 
     @Override
     public void warn(final String message, final Object p0, final Object p1, final Object p2) {
-        if (isEnabled(Level.WARN, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2);
-            logMessage(FQCN, Level.WARN, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2);
     }
 
     @Override
     public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
-        if (isEnabled(Level.WARN, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3);
-            logMessage(FQCN, Level.WARN, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3);
     }
 
     @Override
     public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4) {
-        if (isEnabled(Level.WARN, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4);
-            logMessage(FQCN, Level.WARN, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4);
     }
 
     @Override
     public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5) {
-        if (isEnabled(Level.WARN, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5);
-            logMessage(FQCN, Level.WARN, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4, p5);
     }
 
     @Override
     public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6) {
-        if (isEnabled(Level.WARN, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6);
-            logMessage(FQCN, Level.WARN, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4, p5, p6);
     }
 
     @Override
     public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7) {
-        if (isEnabled(Level.WARN, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
-            logMessage(FQCN, Level.WARN, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7) {
+        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
     }
 
     @Override
     public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
-            final Object p4, final Object p5, final Object p6,
-            final Object p7, final Object p8) {
-        if (isEnabled(Level.WARN, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
-            logMessage(FQCN, Level.WARN, null, msg, msg.getThrowable());
-        }
+            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
+        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
     }
 
     @Override
     public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
             final Object p4, final Object p5, final Object p6,
             final Object p7, final Object p8, final Object p9) {
-        if (isEnabled(Level.WARN, null, message)) {
-            final Message msg = newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
-            logMessage(FQCN, Level.WARN, null, msg, msg.getThrowable());
-        }
+        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
     }
 }


[5/9] logging-log4j2 git commit: LOG4J2-1278 added explicit casts to filter tests to disambiguate the target method

Posted by rp...@apache.org.
LOG4J2-1278 added explicit casts to filter tests to disambiguate the target method


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 7a5f0e61aebd1ffaf93f1ccd5d1209d055b038ee
Parents: 3b7299a
Author: rpopma <rp...@apache.org>
Authored: Fri Mar 18 00:26:02 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Fri Mar 18 00:26:02 2016 +1100

----------------------------------------------------------------------
 .../core/filter/DynamicThresholdFilterTest.java     |  4 ++--
 .../log4j/core/filter/LevelRangeFilterTest.java     |  4 ++--
 .../logging/log4j/core/filter/MarkerFilterTest.java |  6 +++---
 .../logging/log4j/core/filter/RegexFilterTest.java  | 11 ++++++-----
 .../core/filter/ThreadContextMapFilterTest.java     | 16 ++++++++--------
 .../log4j/core/filter/ThresholdFilterTest.java      |  4 ++--
 .../logging/log4j/core/filter/TimeFilterTest.java   |  2 +-
 7 files changed, 24 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5f0e61/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterTest.java
index 61a9a46..52d866b 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterTest.java
@@ -60,8 +60,8 @@ public class DynamicThresholdFilterTest {
                 null);
         filter.start();
         assertTrue(filter.isStarted());
-        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.DEBUG, null, null, (Throwable) null));
-        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, null, (Throwable) null));
+        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
+        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, (Object) null, (Throwable) null));
         ThreadContext.clearMap();
         ThreadContext.put("userid", "JohnDoe");
         ThreadContext.put("organization", "apache");

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5f0e61/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/LevelRangeFilterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/LevelRangeFilterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/LevelRangeFilterTest.java
index bcbe577..4deb468 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/LevelRangeFilterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/LevelRangeFilterTest.java
@@ -35,8 +35,8 @@ public class LevelRangeFilterTest {
         final LevelRangeFilter filter = LevelRangeFilter.createFilter(Level.ERROR, Level.INFO, null, null);
         filter.start();
         assertTrue(filter.isStarted());
-        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, null, (Throwable) null));
-        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, null, (Throwable) null));
+        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
+        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, (Object) null, (Throwable) null));
         LogEvent event = Log4jLogEvent.newBuilder() //
                 .setLevel(Level.DEBUG) //
                 .setMessage(new SimpleMessage("Test")) //

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5f0e61/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/MarkerFilterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/MarkerFilterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/MarkerFilterTest.java
index a7b77b1..1850e77 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/MarkerFilterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/MarkerFilterTest.java
@@ -42,9 +42,9 @@ public class MarkerFilterTest {
         MarkerFilter filter = MarkerFilter.createFilter("Parent", null, null);
         filter.start();
         assertTrue(filter.isStarted());
-        assertSame(Filter.Result.DENY, filter.filter(null, null, stranger, null, (Throwable) null));
-        assertSame(Filter.Result.NEUTRAL, filter.filter(null, null, child, null, (Throwable) null));
-        assertSame(Filter.Result.NEUTRAL, filter.filter(null, null, grandChild, null, (Throwable) null));
+        assertSame(Filter.Result.DENY, filter.filter(null, null, stranger, (Object) null, (Throwable) null));
+        assertSame(Filter.Result.NEUTRAL, filter.filter(null, null, child, (Object) null, (Throwable) null));
+        assertSame(Filter.Result.NEUTRAL, filter.filter(null, null, grandChild, (Object) null, (Throwable) null));
         filter.stop();
         LogEvent event = Log4jLogEvent.newBuilder() //
                 .setMarker(grandChild) //

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5f0e61/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/RegexFilterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/RegexFilterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/RegexFilterTest.java
index 01d3a32..c48edbe 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/RegexFilterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/RegexFilterTest.java
@@ -48,8 +48,9 @@ public class RegexFilterTest {
         filter.start();
         assertTrue(filter.isStarted());
         assertSame(Filter.Result.NEUTRAL,
-                filter.filter(null, Level.DEBUG, null, "This is a test message", (Throwable) null));
-        assertSame(Filter.Result.DENY, filter.filter(null, Level.ERROR, null, "This is not a test", (Throwable) null));
+                filter.filter(null, Level.DEBUG, null, (Object) "This is a test message", (Throwable) null));
+        assertSame(Filter.Result.DENY, filter.filter(null, Level.ERROR, null, (Object) "This is not a test",
+                (Throwable) null));
         LogEvent event = Log4jLogEvent.newBuilder() //
                 .setLevel(Level.DEBUG) //
                 .setMessage(new SimpleMessage("Another test message")) //
@@ -70,8 +71,8 @@ public class RegexFilterTest {
         final String multiLine = "test multi line matches\nsome more lines";
         final RegexFilter filter = RegexFilter.createFilter(".*line.*", new String[] { "DOTALL", "COMMENTS" }, false,
                 Filter.Result.DENY, Filter.Result.ACCEPT);
-        final Result singleLineResult = filter.filter(null, null, null, singleLine, (Throwable) null);
-        final Result multiLineResult = filter.filter(null, null, null, multiLine, (Throwable) null);
+        final Result singleLineResult = filter.filter(null, null, null, (Object) singleLine, (Throwable) null);
+        final Result multiLineResult = filter.filter(null, null, null, (Object) multiLine, (Throwable) null);
         assertThat(singleLineResult, equalTo(Result.DENY));
         assertThat(multiLineResult, equalTo(Result.DENY));
     }
@@ -81,7 +82,7 @@ public class RegexFilterTest {
         final RegexFilter filter = RegexFilter.createFilter(".* test .*", null, false, null, null);
         filter.start();
         assertTrue(filter.isStarted());
-        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (String) null, (Throwable) null));
+        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
         assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (Message) null, (Throwable) null));
         assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, null, (Object[]) null));
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5f0e61/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilterTest.java
index 156ed33..546ef30 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilterTest.java
@@ -39,29 +39,29 @@ public class ThreadContextMapFilterTest {
         ThreadContextMapFilter filter = ThreadContextMapFilter.createFilter(pairs, "and", null, null);
         filter.start();
         assertTrue(filter.isStarted());
-        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, null, (Throwable) null));
+        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
         ThreadContext.remove("userid");
-        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, null, (Throwable) null));
+        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
         ThreadContext.put("userid", "JohnDoe");
-        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, null, (Throwable) null));
+        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, (Object) null, (Throwable) null));
         ThreadContext.put("organization", "ASF");
-        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, null, (Throwable) null));
+        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
         ThreadContext.clearMap();
         filter = ThreadContextMapFilter.createFilter(pairs, "or", null, null);
         filter.start();
         assertTrue(filter.isStarted());
         ThreadContext.put("userid", "testuser");
         ThreadContext.put("organization", "Apache");
-        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.DEBUG, null, null, (Throwable) null));
+        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
         ThreadContext.put("organization", "ASF");
-        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, null, (Throwable) null));
+        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
         ThreadContext.remove("organization");
-        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, null, (Throwable) null));
+        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
         final KeyValuePair[] single = new KeyValuePair[] {new KeyValuePair("userid", "testuser")};
         filter = ThreadContextMapFilter.createFilter(single, null, null, null);
         filter.start();
         assertTrue(filter.isStarted());
-        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.DEBUG, null, null, (Throwable) null));
+        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
         ThreadContext.clearMap();
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5f0e61/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/ThresholdFilterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/ThresholdFilterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/ThresholdFilterTest.java
index 9a71208..5ae7d52 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/ThresholdFilterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/ThresholdFilterTest.java
@@ -35,8 +35,8 @@ public class ThresholdFilterTest {
         final ThresholdFilter filter = ThresholdFilter.createFilter(Level.ERROR, null, null);
         filter.start();
         assertTrue(filter.isStarted());
-        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, null, (Throwable) null));
-        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, null, (Throwable) null));
+        assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (Object) null, (Throwable) null));
+        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, (Object) null, (Throwable) null));
         LogEvent event = Log4jLogEvent.newBuilder() //
                 .setLevel(Level.DEBUG) //
                 .setMessage(new SimpleMessage("Test")) //

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5f0e61/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
index d2e5be8..e39d7db 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
@@ -41,7 +41,7 @@ public class TimeFilterTest {
         cal.set(Calendar.HOUR_OF_DAY, 2);
         long tod = cal.getTimeInMillis();
         LogEvent event = Log4jLogEvent.newBuilder().setTimeMillis(tod).build();
-        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, null, (Throwable) null));
+        assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, (Object) null, (Throwable) null));
         assertSame(Filter.Result.NEUTRAL, filter.filter(event));
         cal.roll(Calendar.DAY_OF_MONTH, true);
         tod = cal.getTimeInMillis();