[java] Log4j의 MDC 사용 예제

Log4j는 로깅 라이브러리로서, 로그 메시지의 품질과 가독성을 높이기 위해 다양한 기능을 제공합니다. 그 중 MDC(Mapped Diagnostic Context)는 로그 메시지에 관련된 추가 정보를 쉽게 전달할 수 있는 기능입니다. MDC를 사용하면 로그 메시지에 추적 ID, 사용자 정보 등과 같은 추가 정보를 함께 기록할 수 있습니다.

MDC 설정하기

MDC를 사용하기 위해서는 다음과 같이 MDC 값을 설정해야 합니다.

import org.apache.log4j.MDC;

public class MyLogger {
    // 로그 메시지에 기록할 MDC 값의 키를 상수로 정의
    private static final String TRACKING_ID_KEY = "trackingId";

    public static void setTrackingId(String trackingId) {
        // MDC에 값을 설정
        MDC.put(TRACKING_ID_KEY, trackingId);
    }

    public static void clearTrackingId() {
        // MDC에서 값을 제거
        MDC.remove(TRACKING_ID_KEY);
    }
}

위의 코드에서 setTrackingId 메서드는 MDC에 트래킹 ID 값을 설정하는 역할을 하고, clearTrackingId 메서드는 MDC에서 트래킹 ID 값을 제거하는 역할을 합니다. TRACKING_ID_KEY는 로그 메시지에 기록될 MDC 값의 키를 상수로 정의한 것입니다.

MDC 사용하기

MDC를 설정한 후에는 로그를 기록할 때 해당 MDC 값을 참조하여 메시지에 적절한 추가 정보를 포함시킬 수 있습니다.

import org.apache.log4j.Logger;

public class MyApp {
    private static final Logger LOGGER = Logger.getLogger(MyApp.class);

    public void doSomething() {
        // MDC 값 설정
        MyLogger.setTrackingId("abcd1234");

        // 로그 기록
        LOGGER.info("Something happened");

        // MDC 값 제거
        MyLogger.clearTrackingId();
    }
}

위의 코드에서 doSomething 메서드에서는 MDC 값을 설정한 후 로그를 기록하고, 메서드를 마치기 전에 MDC 값을 제거합니다. 로그 메시지를 기록할 때 MDC 값을 참조하여, 로그에 트래킹 ID가 추가됩니다.

결론

Log4j의 MDC를 사용하면 로그 메시지에 추가 정보를 포함시킬 수 있어 디버깅이나 로그 분석을 용이하게 할 수 있습니다. MDC를 사용하여 로그 메시지에 필요한 정보를 쉽게 추가할 수 있으며, 이를 통해 시스템의 문제점을 빠르게 파악하고 해결할 수 있습니다.

참고 문서: