Slf4j logging with Java 8 lambda expressions.
The lambda expressions are evaluated only when the log level is enabled.
- Java 8
- Slf4j API
dependencies {
implementation 'kr.pe.kwonnam.slf4j-lambda:slf4j-lambda-core:0.1'
}
- Use
LambdaLoggerFactory
instread of Slf4j'sLoggerFactory
- Use
LambdaLogger
instead of Slf4j'sLogger
.LambdaLogger
inheritsLogger
, so you can still use allLogger
's logging methods with lambda supporting logging methods.
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);