You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2015/08/09 18:17:03 UTC
[07/11] logging-log4j2 git commit: LOG4J2-599 log4j lambda support -
Renamed LambdaLogger to Logger2 - Renamed ExtendedLambdaLogger to
ExtendedLogger2 - Renamed LogManager#getLambdaLogger methods to #getLogger2 -
Introduced custom functional interface Su
LOG4J2-599 log4j lambda support
- Renamed LambdaLogger to Logger2
- Renamed ExtendedLambdaLogger to ExtendedLogger2
- Renamed LogManager#getLambdaLogger methods to #getLogger2
- Introduced custom functional interface Supplier and replaced
Callable<?> in Logger2 with Supplier<?>
- LambdaSupport changes for Supplier instead of Callable
- Introduced custom functional interface MessageSupplier for lambda
expressions that create Message objects directly
- documentation updates
- initial Logger2Test (more tests to follow)
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/12be6d86
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/12be6d86
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/12be6d86
Branch: refs/heads/master
Commit: 12be6d867031c4579ccca856359d04482145e01e
Parents: 63a325d
Author: rpopma <rp...@apache.org>
Authored: Sun Aug 9 23:53:39 2015 +0900
Committer: rpopma <rp...@apache.org>
Committed: Sun Aug 9 23:53:39 2015 +0900
----------------------------------------------------------------------
.../org/apache/logging/log4j/LambdaLogger.java | 429 -----------
.../org/apache/logging/log4j/LogManager.java | 72 +-
.../java/org/apache/logging/log4j/Logger2.java | 738 +++++++++++++++++++
.../logging/log4j/spi/AbstractLogger.java | 270 +++++--
.../logging/log4j/spi/ExtendedLambdaLogger.java | 56 --
.../logging/log4j/spi/ExtendedLogger2.java | 68 ++
.../apache/logging/log4j/util/LambdaUtil.java | 24 +-
.../logging/log4j/util/MessageSupplier.java | 40 +
.../org/apache/logging/log4j/util/Supplier.java | 40 +
.../org/apache/logging/log4j/Logger2Test.java | 190 +++++
.../logging/log4j/util/LambdaUtilTest.java | 95 ++-
src/site/xdoc/manual/api.xml | 6 +-
12 files changed, 1409 insertions(+), 619 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/12be6d86/log4j-api/src/main/java/org/apache/logging/log4j/LambdaLogger.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/LambdaLogger.java b/log4j-api/src/main/java/org/apache/logging/log4j/LambdaLogger.java
deleted file mode 100644
index 84a3fef..0000000
--- a/log4j-api/src/main/java/org/apache/logging/log4j/LambdaLogger.java
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-
-package org.apache.logging.log4j;
-
-import java.util.concurrent.Callable;
-
-/**
- * Extends the {@code Logger} interface with support for lambda expressions.
- * <p>
- * This logger allows client code to lazily log messages without explicitly checking if the requested log level is
- * enabled. For example, previously one would write:
- *
- * <pre>
- * // pre-Java 8 style optimization: explicitly check the log level
- * // to make sure the expensiveOperation() method is only called if necessary
- * Logger logger = LogManager.getLogger();
- * if (logger.isTraceEnabled()) {
- * logger.trace("Some long-running operation returned {}", expensiveOperation());
- * }
- * </pre>
- * <p>
- * With Java 8 and the {@code LambdaLogger} interface, one can achieve the same effect by using a lambda expression:
- *
- * <pre>
- * // Java-8 style optimization: no need to explicitly check the log level:
- * // the lambda expression is not evaluated if the TRACE level is not enabled
- * LambdaLogger logger = LogManager.getLambdaLogger();
- * logger.trace("Some long-running operation returned {}", () -> expensiveOperation());
- * </pre>
- */
-public interface LambdaLogger extends Logger {
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void debug(Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level) including the
- * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t the exception to log, including its stack trace.
- */
- void debug(Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level with
- * the specified Marker.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void debug(Marker marker, Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level) with the
- * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t A Throwable or null.
- */
- void debug(Marker marker, Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#DEBUG
- * DEBUG} level.
- *
- * @param marker the marker data specific to this log statement
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void debug(Marker marker, String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#DEBUG
- * DEBUG} level.
- *
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void debug(String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#ERROR ERROR} level.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void error(Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#ERROR ERROR} level) including the
- * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t the exception to log, including its stack trace.
- */
- void error(Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#ERROR ERROR} level with
- * the specified Marker.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void error(Marker marker, Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#ERROR ERROR} level) with the
- * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t A Throwable or null.
- */
- void error(Marker marker, Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#ERROR
- * ERROR} level.
- *
- * @param marker the marker data specific to this log statement
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void error(Marker marker, String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#ERROR
- * ERROR} level.
- *
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void error(String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#FATAL FATAL} level.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void fatal(Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#FATAL FATAL} level) including the
- * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t the exception to log, including its stack trace.
- */
- void fatal(Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#FATAL FATAL} level with
- * the specified Marker.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void fatal(Marker marker, Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#FATAL FATAL} level) with the
- * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t A Throwable or null.
- */
- void fatal(Marker marker, Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#FATAL
- * FATAL} level.
- *
- * @param marker the marker data specific to this log statement
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void fatal(Marker marker, String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#FATAL
- * FATAL} level.
- *
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void fatal(String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#INFO INFO} level.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void info(Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#INFO INFO} level) including the
- * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t the exception to log, including its stack trace.
- */
- void info(Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#INFO INFO} level with the
- * specified Marker.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void info(Marker marker, Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#INFO INFO} level) with the
- * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t A Throwable or null.
- */
- void info(Marker marker, Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#INFO
- * INFO} level.
- *
- * @param marker the marker data specific to this log statement
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void info(Marker marker, String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#INFO
- * INFO} level.
- *
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void info(String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the specified level.
- *
- * @param level the logging level
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void log(Level level, Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the specified level) including the stack log of
- * the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param level the logging level
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t the exception to log, including its stack log.
- */
- void log(Level level, Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message (only to be constructed if the logging level is the specified level) with the specified Marker.
- *
- * @param level the logging level
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void log(Level level, Marker marker, Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the specified level) with the specified Marker and
- * including the stack log of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param level the logging level
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t A Throwable or null.
- */
- void log(Level level, Marker marker, Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the specified level.
- *
- * @param level the logging level
- * @param marker the marker data specific to this log statement
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void log(Level level, Marker marker, String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the specified level.
- *
- * @param level the logging level
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void log(Level level, String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#TRACE TRACE} level.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void trace(Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#TRACE TRACE} level) including the
- * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t the exception to log, including its stack trace.
- */
- void trace(Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#TRACE TRACE} level with
- * the specified Marker.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void trace(Marker marker, Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#TRACE TRACE} level) with the
- * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t A Throwable or null.
- */
- void trace(Marker marker, Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#TRACE
- * TRACE} level.
- *
- * @param marker the marker data specific to this log statement
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void trace(Marker marker, String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#TRACE
- * TRACE} level.
- *
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void trace(String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#WARN WARN} level.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void warn(Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#WARN WARN} level) including the
- * stack warn of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t the exception to log, including its stack warn.
- */
- void warn(Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message which is only to be constructed if the logging level is the {@link Level#WARN WARN} level with the
- * specified Marker.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- */
- void warn(Marker marker, Callable<?> msgSupplier);
-
- /**
- * Logs a message (only to be constructed if the logging level is the {@link Level#WARN WARN} level) with the
- * specified Marker and including the stack warn of the {@link Throwable} <code>t</code> passed as parameter.
- *
- * @param marker the marker data specific to this log statement
- * @param msgSupplier A function, which when called, produces the desired log message.
- * @param t A Throwable or null.
- */
- void warn(Marker marker, Callable<?> msgSupplier, Throwable t);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#WARN
- * WARN} level.
- *
- * @param marker the marker data specific to this log statement
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void warn(Marker marker, String message, Callable<?>... paramSuppliers);
-
- /**
- * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#WARN
- * WARN} level.
- *
- * @param message the message to log; the format depends on the message factory.
- * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
- */
- void warn(String message, Callable<?>... paramSuppliers);
-
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/12be6d86/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java b/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
index f4aa848..196aa9f 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
@@ -416,12 +416,13 @@ public class LogManager {
}
/**
- * Returns a LambdaLogger with the name of the calling class.
- * @return The LambdaLogger for the calling class.
+ * Returns a Logger2 with the name of the calling class.
+ * @return The Logger2 for the calling class.
* @throws UnsupportedOperationException if the calling class cannot be determined.
+ * @since log4j-2.4
*/
- public static LambdaLogger getLambdaLogger() {
- return (LambdaLogger) getLogger(ReflectionUtil.getCallerClass(2));
+ public static Logger2 getLogger2() {
+ return (Logger2) getLogger(ReflectionUtil.getCallerClass(2));
}
private static Class<?> callerClass(final Class<?> clazz) {
@@ -436,90 +437,97 @@ public class LogManager {
}
/**
- * Returns a LambdaLogger using the fully qualified name of the Class as the Logger name.
+ * Returns a Logger2 using the fully qualified name of the Class as the Logger name.
* @param clazz The Class whose name should be used as the Logger name. If null it will default to the calling
* class.
- * @return The LambdaLogger.
+ * @return The Logger2.
* @throws UnsupportedOperationException if {@code clazz} is {@code null} and the calling class cannot be determined.
+ * @since log4j-2.4
*/
- public static LambdaLogger getLambdaLogger(final Class<?> clazz) {
+ public static Logger2 getLogger2(final Class<?> clazz) {
final Class<?> cls = callerClass(clazz);
- return (LambdaLogger) getContext(cls.getClassLoader(), false).getLogger(cls.getName());
+ return (Logger2) getContext(cls.getClassLoader(), false).getLogger(cls.getName());
}
/**
- * Returns a LambdaLogger using the fully qualified name of the Class as the Logger name.
+ * Returns a Logger2 using the fully qualified name of the Class as the Logger name.
* @param clazz The Class whose name should be used as the Logger name. If null it will default to the calling
* class.
* @param messageFactory The message factory is used only when creating a logger, subsequent use does not change
* the logger but will log a warning if mismatched.
- * @return The LambdaLogger.
+ * @return The Logger2.
* @throws UnsupportedOperationException if {@code clazz} is {@code null} and the calling class cannot be determined.
+ * @since log4j-2.4
*/
- public static LambdaLogger getLambdaLogger(final Class<?> clazz, final MessageFactory messageFactory) {
+ public static Logger2 getLogger2(final Class<?> clazz, final MessageFactory messageFactory) {
final Class<?> cls = callerClass(clazz);
- return (LambdaLogger) getContext(cls.getClassLoader(), false).getLogger(cls.getName(), messageFactory);
+ return (Logger2) getContext(cls.getClassLoader(), false).getLogger(cls.getName(), messageFactory);
}
/**
- * Returns a LambdaLogger with the name of the calling class.
+ * Returns a Logger2 with the name of the calling class.
* @param messageFactory The message factory is used only when creating a logger, subsequent use does not change
* the logger but will log a warning if mismatched.
- * @return The LambdaLogger for the calling class.
+ * @return The Logger2 for the calling class.
* @throws UnsupportedOperationException if the calling class cannot be determined.
+ * @since log4j-2.4
*/
- public static LambdaLogger getLambdaLogger(final MessageFactory messageFactory) {
- return (LambdaLogger) getLogger(ReflectionUtil.getCallerClass(2), messageFactory);
+ public static Logger2 getLogger2(final MessageFactory messageFactory) {
+ return (Logger2) getLogger(ReflectionUtil.getCallerClass(2), messageFactory);
}
/**
- * Returns a LambdaLogger using the fully qualified class name of the value as the Logger name.
+ * Returns a Logger2 using the fully qualified class name of the value as the Logger name.
* @param value The value whose class name should be used as the Logger name. If null the name of the calling
* class will be used as the logger name.
- * @return The LambdaLogger.
+ * @return The Logger2.
* @throws UnsupportedOperationException if {@code value} is {@code null} and the calling class cannot be determined.
+ * @since log4j-2.4
*/
- public static LambdaLogger getLambdaLogger(final Object value) {
- return (LambdaLogger) getLogger(value != null ? value.getClass() : ReflectionUtil.getCallerClass(2));
+ public static Logger2 getLogger2(final Object value) {
+ return (Logger2) getLogger(value != null ? value.getClass() : ReflectionUtil.getCallerClass(2));
}
/**
- * Returns a LambdaLogger using the fully qualified class name of the value as the Logger name.
+ * Returns a Logger2 using the fully qualified class name of the value as the Logger name.
* @param value The value whose class name should be used as the Logger name. If null the name of the calling
* class will be used as the logger name.
* @param messageFactory The message factory is used only when creating a logger, subsequent use does not change
* the logger but will log a warning if mismatched.
- * @return The LambdaLogger.
+ * @return The Logger2.
* @throws UnsupportedOperationException if {@code value} is {@code null} and the calling class cannot be determined.
+ * @since log4j-2.4
*/
- public static LambdaLogger getLambdaLogger(final Object value, final MessageFactory messageFactory) {
- return (LambdaLogger) getLogger(value != null ? value.getClass() : ReflectionUtil.getCallerClass(2),
+ public static Logger2 getLogger2(final Object value, final MessageFactory messageFactory) {
+ return (Logger2) getLogger(value != null ? value.getClass() : ReflectionUtil.getCallerClass(2),
messageFactory);
}
/**
- * Returns a LambdaLogger with the specified name.
+ * Returns a Logger2 with the specified name.
*
* @param name The logger name. If null the name of the calling class will be used.
- * @return The LambdaLogger.
+ * @return The Logger2.
* @throws UnsupportedOperationException if {@code name} is {@code null} and the calling class cannot be determined.
+ * @since log4j-2.4
*/
- public static LambdaLogger getLambdaLogger(final String name) {
- return (LambdaLogger) (name != null ? getContext(false).getLogger(name) : getLogger(
+ public static Logger2 getLogger2(final String name) {
+ return (Logger2) (name != null ? getContext(false).getLogger(name) : getLogger(
ReflectionUtil.getCallerClass(2)));
}
/**
- * Returns a LambdaLogger with the specified name.
+ * Returns a Logger2 with the specified name.
*
* @param name The logger name. If null the name of the calling class will be used.
* @param messageFactory The message factory is used only when creating a logger, subsequent use does not change
* the logger but will log a warning if mismatched.
- * @return The LambdaLogger.
+ * @return The Logger2.
* @throws UnsupportedOperationException if {@code name} is {@code null} and the calling class cannot be determined.
+ * @since log4j-2.4
*/
- public static LambdaLogger getLambdaLogger(final String name, final MessageFactory messageFactory) {
- return (LambdaLogger) (name != null ? getContext(false).getLogger(name, messageFactory) : getLogger(
+ public static Logger2 getLogger2(final String name, final MessageFactory messageFactory) {
+ return (Logger2) (name != null ? getContext(false).getLogger(name, messageFactory) : getLogger(
ReflectionUtil.getCallerClass(2), messageFactory));
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/12be6d86/log4j-api/src/main/java/org/apache/logging/log4j/Logger2.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/Logger2.java b/log4j-api/src/main/java/org/apache/logging/log4j/Logger2.java
new file mode 100644
index 0000000..4315841
--- /dev/null
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/Logger2.java
@@ -0,0 +1,738 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j;
+
+import org.apache.logging.log4j.message.MessageFactory;
+import org.apache.logging.log4j.util.MessageSupplier;
+import org.apache.logging.log4j.util.Supplier;
+
+/**
+ * Extends the {@code Logger} interface with support for lambda expressions.
+ * <p>
+ * This logger allows client code to lazily log messages without explicitly checking if the requested log level is
+ * enabled. For example, previously one would write:
+ *
+ * <pre>
+ * // pre-Java 8 style optimization: explicitly check the log level
+ * // to make sure the expensiveOperation() method is only called if necessary
+ * Logger logger = LogManager.getLogger();
+ * if (logger.isTraceEnabled()) {
+ * logger.trace("Some long-running operation returned {}", expensiveOperation());
+ * }
+ * </pre>
+ * <p>
+ * With Java 8 and the {@code Logger2} interface, one can achieve the same effect by using a lambda expression:
+ *
+ * <pre>
+ * // Java-8 style optimization: no need to explicitly check the log level:
+ * // the lambda expression is not evaluated if the TRACE level is not enabled
+ * Logger2 logger = LogManager.getLogger2();
+ * logger.trace("Some long-running operation returned {}", () -> expensiveOperation());
+ * </pre>
+ *
+ * @since log4j-2.4
+ */
+public interface Logger2 extends Logger {
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void debug(Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level) including the
+ * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t the exception to log, including its stack trace.
+ */
+ void debug(Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level with
+ * the specified Marker.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void debug(Marker marker, Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level) with the
+ * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t A Throwable or null.
+ */
+ void debug(Marker marker, Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level with
+ * the specified Marker. The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the
+ * {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void debug(Marker marker, MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level) with the
+ * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter. The
+ * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t A Throwable or null.
+ */
+ void debug(Marker marker, MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level. The
+ * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void debug(MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level) including the
+ * stack trace of the {@link Throwable} <code>t</code> passed as parameter. The {@code MessageSupplier} may or may
+ * not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t the exception to log, including its stack trace.
+ */
+ void debug(MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#DEBUG
+ * DEBUG} level.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void debug(Marker marker, String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#DEBUG
+ * DEBUG} level.
+ *
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void debug(String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#ERROR ERROR} level.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void error(Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#ERROR ERROR} level) including the
+ * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t the exception to log, including its stack trace.
+ */
+ void error(Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#ERROR ERROR} level with
+ * the specified Marker.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void error(Marker marker, Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#ERROR ERROR} level) with the
+ * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t A Throwable or null.
+ */
+ void error(Marker marker, Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#ERROR
+ * ERROR} level.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void error(Marker marker, String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#ERROR ERROR} level with
+ * the specified Marker.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void error(Marker marker, MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#ERROR ERROR} level) with the
+ * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t A Throwable or null.
+ */
+ void error(Marker marker, MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#ERROR ERROR} level.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void error(MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#ERROR ERROR} level) including the
+ * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t the exception to log, including its stack trace.
+ */
+ void error(MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#ERROR
+ * ERROR} level.
+ *
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void error(String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#FATAL FATAL} level.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void fatal(Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#FATAL FATAL} level) including the
+ * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t the exception to log, including its stack trace.
+ */
+ void fatal(Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#FATAL FATAL} level with
+ * the specified Marker.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void fatal(Marker marker, Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#FATAL FATAL} level) with the
+ * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t A Throwable or null.
+ */
+ void fatal(Marker marker, Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#FATAL
+ * FATAL} level.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void fatal(Marker marker, String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#FATAL FATAL} level with
+ * the specified Marker.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void fatal(Marker marker, MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#FATAL FATAL} level) with the
+ * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t A Throwable or null.
+ */
+ void fatal(Marker marker, MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#FATAL FATAL} level.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void fatal(MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#FATAL FATAL} level) including the
+ * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t the exception to log, including its stack trace.
+ */
+ void fatal(MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#FATAL
+ * FATAL} level.
+ *
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void fatal(String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#INFO INFO} level.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void info(Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#INFO INFO} level) including the
+ * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t the exception to log, including its stack trace.
+ */
+ void info(Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#INFO INFO} level with the
+ * specified Marker.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void info(Marker marker, Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#INFO INFO} level) with the
+ * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t A Throwable or null.
+ */
+ void info(Marker marker, Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#INFO
+ * INFO} level.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void info(Marker marker, String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#INFO INFO} level with
+ * the specified Marker.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void info(Marker marker, MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#INFO INFO} level) with the
+ * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t A Throwable or null.
+ */
+ void info(Marker marker, MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#INFO INFO} level.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void info(MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#INFO INFO} level) including the
+ * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t the exception to log, including its stack trace.
+ */
+ void info(MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#INFO
+ * INFO} level.
+ *
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void info(String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the specified level.
+ *
+ * @param level the logging level
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void log(Level level, Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the specified level) including the stack log of
+ * the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param level the logging level
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t the exception to log, including its stack log.
+ */
+ void log(Level level, Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the specified level) with the specified Marker.
+ *
+ * @param level the logging level
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void log(Level level, Marker marker, Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the specified level) with the specified Marker and
+ * including the stack log of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param level the logging level
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t A Throwable or null.
+ */
+ void log(Level level, Marker marker, Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the specified level.
+ *
+ * @param level the logging level
+ * @param marker the marker data specific to this log statement
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void log(Level level, Marker marker, String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the specified level with
+ * the specified Marker.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param level the logging level
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void log(Level level, Marker marker, MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the specified level) with the
+ * specified Marker and including the stack log of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param level the logging level
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t A Throwable or null.
+ */
+ void log(Level level, Marker marker, MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the specified level.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param level the logging level
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void log(Level level, MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the specified level) including the
+ * stack log of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param level the logging level
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t the exception to log, including its stack log.
+ */
+ void log(Level level, MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the specified level.
+ *
+ * @param level the logging level
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void log(Level level, String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#TRACE TRACE} level.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void trace(Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#TRACE TRACE} level) including the
+ * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t the exception to log, including its stack trace.
+ */
+ void trace(Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#TRACE TRACE} level with
+ * the specified Marker.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void trace(Marker marker, Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#TRACE TRACE} level) with the
+ * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t A Throwable or null.
+ */
+ void trace(Marker marker, Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#TRACE
+ * TRACE} level.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void trace(Marker marker, String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#TRACE TRACE} level with
+ * the specified Marker.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void trace(Marker marker, MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#TRACE TRACE} level) with the
+ * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t A Throwable or null.
+ */
+ void trace(Marker marker, MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#TRACE TRACE} level.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void trace(MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#TRACE TRACE} level) including the
+ * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t the exception to log, including its stack trace.
+ */
+ void trace(MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#TRACE
+ * TRACE} level.
+ *
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void trace(String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#WARN WARN} level.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void warn(Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#WARN WARN} level) including the
+ * stack warn of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t the exception to log, including its stack warn.
+ */
+ void warn(Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#WARN WARN} level with the
+ * specified Marker.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ */
+ void warn(Marker marker, Supplier<?> msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#WARN WARN} level) with the
+ * specified Marker and including the stack warn of the {@link Throwable} <code>t</code> passed as parameter.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
+ * message factory.
+ * @param t A Throwable or null.
+ */
+ void warn(Marker marker, Supplier<?> msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#WARN
+ * WARN} level.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void warn(Marker marker, String message, Supplier<?>... paramSuppliers);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#WARN WARN} level with
+ * the specified Marker.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void warn(Marker marker, MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#WARN WARN} level) with the
+ * specified Marker and including the stack warn of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param marker the marker data specific to this log statement
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t A Throwable or null.
+ */
+ void warn(Marker marker, MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message which is only to be constructed if the logging level is the {@link Level#WARN WARN} level.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ */
+ void warn(MessageSupplier msgSupplier);
+
+ /**
+ * Logs a message (only to be constructed if the logging level is the {@link Level#WARN WARN} level) including the
+ * stack warn of the {@link Throwable} <code>t</code> passed as parameter.
+ * The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
+ *
+ * @param msgSupplier A function, which when called, produces the desired log message.
+ * @param t the exception to log, including its stack warn.
+ */
+ void warn(MessageSupplier msgSupplier, Throwable t);
+
+ /**
+ * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#WARN
+ * WARN} level.
+ *
+ * @param message the message to log; the format depends on the message factory.
+ * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
+ */
+ void warn(String message, Supplier<?>... paramSuppliers);
+
+}