在Log4j最新的API中,我们拥有Lambda支持,可以轻松管理Debug选项。SLF4J的Lambda支持API
Example:
logger.debug("This {} and {} with {} ",
() -> this,() -> that,() -> compute());
但是对于slf4j/logback,是否有任何选项可以使lambda启用,如上所述。请让我知道语法。
在Log4j最新的API中,我们拥有Lambda支持,可以轻松管理Debug选项。SLF4J的Lambda支持API
Example:
logger.debug("This {} and {} with {} ",
() -> this,() -> that,() -> compute());
但是对于slf4j/logback,是否有任何选项可以使lambda启用,如上所述。请让我知道语法。
也许这样的事情会工作。您需要确定new
的实例的成本是否比另一种方式更好。
logger.debug("This {} and {} with {} ",
defer(() -> this),
defer(() -> that),
defer(() -> compute()));
本
则...
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(staticName = "defer")
public class LogString {
@NonNull private final StringGenerator generator;
@Override
public String toString() {
return generator.createString();
}
public interface StringGenerator {
String createString();
}
}
不幸的是,这还不支持:https://jira.qos.ch/browse/SLF4J-371
slf4j-lambda支持:
import kr.pe.kwonnam.slf4jlambda.LambdaLogger;
import kr.pe.kwonnam.slf4jlambda.LambdaLoggerFactory;
LambdaLogger log = LambdaLoggerFactory.getLogger(YourClass.class);
// lambda for message itself
log.debug(() -> createMessage("debug level"));
// lambda for message format's arguments
log.info("info lambda formatter number {}, string {}",() -> 123,() -> "Hello LambdaLogger");
// method reference
public String longRunnigMethod() {
return "some long running method";
}
log.debug("Long running method logging {}", this::longRunnigMethod);
// exception logging
log.error(() -> "error lambda exception msg - " + ex.getMessage(), ex);