[java] SLF4J에서 로그 메시지 포맷팅하기

SLF4J는 자바에서 로그를 기록하기 위한 인기있는 로깅 라이브러리입니다. 이 라이브러리를 사용하면 로그 메시지를 포맷팅하여 보기 쉽고 유용한 정보를 포함시킬 수 있습니다. 이번 글에서는 SLF4J에서 로그 메시지를 포맷팅하는 방법에 대해 알아보겠습니다.

로그 메시지 포맷팅하기

SLF4J에서 로그 메시지를 포맷팅하는 방법은 매우 간단합니다. 기본적으로 SLF4J는 Java의 문자열 포맷팅 기능을 이용하여 로그 메시지를 생성합니다. 이를 사용하면 메시지에 변수 값을 동적으로 추가할 수 있습니다.

예를 들어, 다음과 같은 로그 문장을 기록하고 싶다고 가정해봅시다:

String name = "John";
int age = 30;
logger.info("User {} is {} years old", name, age);

위 예시에서는 {}를 사용하여 변수 값을 포맷 문자열에 추가하고 있습니다. nameage 변수의 값은 각각 {}에 대응되어 로그 메시지에 동적으로 추가됩니다.

변수 값 포맷팅하기

때로는 로그에 기록할 변수 값을 특정 형식으로 포맷팅해야 할 때가 있습니다. 이를 위해 SLF4J는 Java의 String.format() 메서드를 사용할 수 있도록 지원합니다.

예를 들어, 숫자를 금액 형식으로 표시하기 위해 다음과 같이 포맷팅할 수 있습니다:

double balance = 1024.56;
logger.info("Your balance is $%.2f", balance);

위 예시에서는 포맷 문자열 "%.2f"를 사용하여 balance 변수 값을 소수점 2자리까지 표시하도록 포맷팅하고 있습니다.

로그 레벨 설정하기

SLF4J에서는 로그 메시지의 중요도를 나타내기 위해 다양한 로그 레벨을 제공합니다. 다음은 SLF4J의 로그 레벨 목록입니다:

로그 레벨을 설정하여 어떤 메시지들을 출력할지 결정할 수 있습니다. 예를 들어, 아래와 같이 로거에 로그 레벨을 설정할 수 있습니다:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClass {
    private static final Logger logger = LoggerFactory.getLogger(MyClass.class);

    public static void main(String[] args) {
        logger.error("This is an error message");
        logger.info("This is an info message");
    }
}

위 예시에서는 error 레벨 설정으로 인해 "This is an error message" 메시지만 로깅되고, info 레벨 설정은 무시됩니다.

참고 자료

SLF4J를 사용하여 로그 메시지를 포맷팅하는 방법에 대해 알아보았습니다. 이를 통해 더욱 가독성 높은 로그를 작성할 수 있습니다. 더 자세한 내용은 SLF4J 공식 문서를 참고하시기 바랍니다.