[
https://issues.apache.org/jira/browse/LOG4J2-599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14661091#comment-14661091
]
Remko Popma commented on LOG4J2-599:
------------------------------------
The solution in the branch avoids the API change by introducing a new interface
{{LamdaLogger}} which extends {{Logger}} with new methods that accept lamda
parameters.
Client code would look like this:
{code}
LambdaLogger logger = LogManager.getLambdaLogger();
logger.trace("Some expensive operation returned {}", () ->
expensiveOperation());
{code}
Your idea to provide a static method to support mixing lamda expressions with
object parameters is a good one. The branch also contains a {{LamdaUtil}} class
that can be used exactly the way you describe. I will update the documentation
accordingly.
In the case where you want to lazily construct all parameters or the whole
message, direct lamda support is more convenient and gives cleaner client code.
> Support lambda functions (or similar) for log message parameters
> ----------------------------------------------------------------
>
> Key: LOG4J2-599
> URL: https://issues.apache.org/jira/browse/LOG4J2-599
> Project: Log4j 2
> Issue Type: Brainstorming
> Components: Core
> Reporter: Matt Sicker
> Priority: Minor
> Labels: Java8
>
> It would be nice if we could support 0-param lambda functions (or the
> equivalent: interfaces with a single empty-parameter message call), or more
> simply, allow Runnables (or something similar) to be passed which will be
> dynamically executed if the log message is enabled.
> The use case here is that although string construction of the log message is
> a performance issue that is already solved quite well, the problem of adding
> in information to the log message that makes other calculations still needs
> to be wrapped in an if check.
> I'm not sure if it'd be best to just use Runnable, or create a new interface,
> or try to emulate how Java 1.8 lambdas work via an interface with a single
> method defined. The details here would still need to be fleshed out, but I
> think this sort of feature could be rather handy (especially in a Java 1.8+
> environment, or in Groovy/Scala/etc.).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]