[ https://jira.qos.ch/browse/SLF4J-371?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=19204#comment-19204 ]
Eric Deandrea commented on SLF4J-371: ------------------------------------- Thanks @garydgregory. The problem is we're tightly integrated with the SLF4J APIs (i.e. MDC, etc) and swapping out the entire logging facade would be a big headache through hundreds of applications within a large enterprise. > 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 > > 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 slf4j-dev@qos.ch http://mailman.qos.ch/mailman/listinfo/slf4j-dev