[java] SLF4J를 사용하여 로깅 메시지에 색상을 적용하는 방법은 무엇인가요?

하지만, 일부 환경에서는 색상을 적용할 수 있는 특정한 로거를 제공하기도 합니다. 예를 들어, 터미널 환경에서는 ANSI escape code를 사용하여 색상을 적용할 수 있습니다.

아래는 SLF4J와 Logback을 사용하여 로깅 메시지에 색상을 적용하는 예제입니다:

  1. 먼저, Logback을 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같은 의존성을 추가합니다:
<dependencies>
    <!-- SLF4J API -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.30</version>
    </dependency>
    
    <!-- Logback Classic -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>
  1. 로깅 설정 파일(logback.xml)을 작성합니다. 이 파일은 클래스패스의 루트에 위치해야 합니다. 아래의 예제를 참고해주세요:
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%highlight(%-5level)] %logger{36} - %msg%n</pattern>
            <outputPatternAsHeader>true</outputPatternAsHeader>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

위 설정은 날짜, 로그 레벨, 로거 이름, 로그 메시지를 출력하며, 로그 레벨에 따라 다른 색상을 적용합니다.

  1. 로그를 출력하는 코드에서 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.info("This is an info message.");
        logger.warn("This is a warning message.");
        logger.error("This is an error message.");
    }
}

위 예제에서는 SLF4J의 Logger 인터페이스를 사용하여 로그 메시지를 출력합니다. info, warn, error 메소드 등 다양한 메소드를 사용할 수 있습니다.

위의 설정 파일을 사용하면 로그 레벨에 따라 다른 색상이 적용된 로그 메시지가 터미널에 나타날 것입니다.