logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Remko Popma (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (LOG4J2-599) Support lambda functions (or similar) for log message parameters
Date Thu, 06 Aug 2015 12:23:04 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14659916#comment-14659916
] 

Remko Popma edited comment on LOG4J2-599 at 8/6/15 12:22 PM:
-------------------------------------------------------------

Perhaps not quite what Mikael had in mind (not sure about the new module) but the new interface
is a good idea! We can introduce a new interface, say {{LambdaLogger extends Logger}} which
has these methods that take a {{Callable}} lambda expression. The current {{Logger}} interface
stays the same.

Client code that wants to use lambda expressions for lazy logging would look like this:
{code}
LambdaLogger logger = LogManager.getLambdaLogger();
logger.trace("Some expensive operation returned {}", () -> expensiveOperation());
{code}

That would avoid modifying any existing interface so we don't break any existing client code.

I would be happy to include this in a minor (2.x) version without requiring a major (3.0)
version increment.

Thoughts?


was (Author: remkop@yahoo.com):
Perhaps not quite what Mikael had in mind but his suggestion gave me a good idea! We can introduce
a new interface, say {{LambdaLogger extends Logger}} which has these methods that take a {{Callable}}
lambda expression. The current {{Logger}} interface stays the same.

Client code that wants to use lambda expressions for lazy logging would look like this:
{code}
LambdaLogger logger = LogManager.getLambdaLogger();
logger.trace("Some expensive operation returned {}", () -> expensiveOperation());
{code}

That would avoid modifying any existing interface so we don't break any existing client code.

I would be happy to include this in a minor (2.x) version without requiring a major (3.0)
version increment.

Thoughts?

> 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: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Mime
View raw message