java - debug - Soporte Lambda para SLF4J API
slf4j maven (3)
Desafortunadamente, esto aún no está soportado: https://jira.qos.ch/browse/SLF4J-371
En la última API de Log4j tenemos soporte Lambda donde puedo administrar la opción de depuración fácilmente.
Ejemplo:
logger.debug("This {} and {} with {} ",
() -> this, () -> that, () -> compute());
Pero para slf4j / logback hay alguna opción para habilitar lambda como se mencionó anteriormente. Por favor, hágamelo saber la sintaxis entonces.
Tal vez algo como esto podría funcionar. Deberá determinar si el costo de las new
instancias es mejor que hacerlo de otra manera.
logger.debug("This {} and {} with {} ",
defer(() -> this),
defer(() -> that),
defer(() -> compute()));
Entonces con esto ...
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();
}
}
slf4j-lambda apoya que:
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);