
[ https://jira.qos.ch/browse/SLF4J-371?page=com.atlassian.jira.plugin.system.i... ] Dean Hiller commented on SLF4J-371: ----------------------------------- @ceki also, there is something wrong with the alpha release of source files.....all other 3rd party releases that gradle is downloading including the old slf4j version I used where bringing down the source so when I navigate into the 3rd party library, I am in the source code. For the new slf4j, eclipse is only opening *.class files and not the *.java files :(. This makes it harder to debug what is going on in the situations above to help out more :(.
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.0-alpha1
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)