example debug java logback slf4j

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);