[ 
https://jira.qos.ch/browse/SLF4J-371?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=19565#comment-19565
 ] 

Federico Fissore commented on SLF4J-371:
----------------------------------------

@Robert @Eric I wasn't aware of that use case. I've just published version 
0.13.0 of slf4j-fluent which adds support to message suppliers.

Yes, it's a custom extension, but Ceki preferred to go solo on implementing the 
fluent API, so slf4j-fluent might be better than waiting for slf4j 2.0 to come 
out

> Support the lambda expression in the Logger
> -------------------------------------------
>
>                 Key: SLF4J-371
>                 URL: https://jira.qos.ch/browse/SLF4J-371
>             Project: SLF4J
>          Issue Type: Improvement
>          Components: Core API
>    Affects Versions: 1.7.22
>            Reporter: MiNG
>            Assignee: SLF4J developers list
>             Fix For: 2.0
>
>
> In some cases, we don't want to calculate the expression for logging eagerly 
> cause the performance reason. Then, we would write the code like the 
> following:
> {code:java}
> if (LOGGER.isWarnEnabled())
> {
>  LOGGER.warn("some message: {}", Json.serialize(obj));
> }{code}
> Before JDK8, there is no way to encapsulate the above code, because the 
> expression is always calculated before passed as an argument. So, many "if"s 
> appear in the code and smell badly.
> Now, the lambda expression is supported by JDK8, the above could be 
> simplified like following:
> {code:java}
> LOGGER.warn(formatter -> formatter.format("some message: {}", 
> Json.serialize(obj)));{code}
> With the default method definition in the org.slf4j.Logger:
> {code:java}
> public interface Logger
> {
>  default void warn(Function<MessageFormatter, String> messageSupplier)
>  {
>   if (this.isWarnEnabled())
>   {
>    /* Calculate the expression only if the WARN level logging is enabled. */
>    this.warn(messageSupplier.apply(this.getFormatter()));
>   }
>  }
> }{code}



--
This message was sent by Atlassian JIRA
(v7.3.1#73012)
_______________________________________________
slf4j-dev mailing list
[email protected]
http://mailman.qos.ch/mailman/listinfo/slf4j-dev

Reply via email to