[java] SLF4J에서 로깅 메시지에 성능 측정 정보를 추가하는 방법은 무엇인가요?

MDC는 로그 메시지에 추가 데이터를 컨텍스트 맵 형태로 저장하는 기능입니다. 성능 측정 정보를 로깅 메시지에 추가하기 위해서는 다음과 같은 단계를 따를 수 있습니다:

  1. MDC에서 성능 측정 정보를 설정합니다. 이 정보는 스레드 로컬로 저장되며, 각 스레드에서 사용됩니다.
import org.slf4j.MDC;
import java.util.concurrent.TimeUnit;

...

long startTime = System.nanoTime();
// 코드 실행
long endTime = System.nanoTime();
long elapsedTime = endTime - startTime;
MDC.put("performance", String.format("%d ms", TimeUnit.NANOSECONDS.toMillis(elapsedTime)));
  1. MDC에 저장된 성능 측정 정보를 로그 메시지에 추가합니다. 이때 로그 메시지 패턴에 %X{performance}을 포함시키면 됩니다.
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %X{performance}%n</pattern>
    </encoder>
</appender>
  1. 로그 메시지를 출력합니다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

...

private static final Logger logger = LoggerFactory.getLogger(YourClass.class);

...

logger.info("성능 측정 로그 메시지");

위와 같이 설정하면 로그 메시지에 성능 측정 정보가 추가되어 출력됩니다. 이를 통해 각 로그 메시지의 실행 시간을 측정할 수 있습니다.

SLF4J의 MDC를 사용하면 로깅에 추가 정보를 쉽게 추가할 수 있으며, 성능 측정을 비롯한 다양한 로깅 시나리오에 유용하게 활용할 수 있습니다.

더 자세한 정보는 SLF4J 공식 문서를 참조하시기 바랍니다.