개발/백엔드

spring-boot-starter-logging

나한나한나한나 2024. 6. 14. 16:51

Spring Boot에서 spring-boot-starter-logging은 로깅 기능을 쉽게 설정할 수 있도록 도와주는 스타터입니다. 이 스타터는 기본적으로 SLF4J(Simple Logging Facade for Java)와 Logback을 사용합니다. 이 두 가지는 자바 애플리케이션에서 로깅을 처리하는 데 중요한 역할을 합니다.

SLF4J (Simple Logging Facade for Java)

SLF4J는 다양한 로깅 프레임워크에 대한 추상화 계층을 제공합니다. 즉, SLF4J를 사용하면 애플리케이션 코드는 SLF4J API를 통해 로깅을 수행하고, 실제 로깅 구현은 런타임에 선택할 수 있습니다. 이를 통해 로깅 구현체를 쉽게 교체할 수 있습니다.

장점:

  • 로깅 프레임워크 교체의 용이성: SLF4J를 사용하면 코드 변경 없이도 로깅 구현체를 교체할 수 있습니다.
  • 일관된 API: 여러 로깅 프레임워크에 걸쳐 일관된 API를 제공합니다.

예시 코드:

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

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

    public static void main(String[] args) {
        logger.info("Application started");
    }
}

Logback

Logback은 SLF4J를 기본 로깅 API로 사용하는 로깅 프레임워크입니다. Logback은 성능과 유연성 면에서 많은 장점을 가지고 있으며, 특히 대규모 애플리케이션에서 효과적입니다. Spring Boot는 기본적으로 Logback을 로깅 구현체로 사용합니다.

장점:

  • 성능: Logback은 빠르고 효율적인 로깅을 제공합니다.
  • 구성 가능성: XML 기반의 설정 파일을 통해 유연하게 설정할 수 있습니다.
  • 조건부 로깅: 특정 조건에 따라 로깅을 활성화하거나 비활성화할 수 있습니다.

기본 설정:
Spring Boot는 기본적으로 logback-spring.xml 또는 logback.xml 파일을 통해 Logback을 설정합니다.

예시 코드:

<configuration>
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>

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

Spring Boot와의 통합

spring-boot-starter-logging 스타터는 기본적으로 SLF4J와 Logback을 포함하고 설정합니다. 따라서, 별도의 설정 없이도 기본적인 로깅 기능을 사용할 수 있습니다.

기본 로깅 설정:
Spring Boot는 기본적으로 다음과 같은 로깅 설정을 사용합니다:

  • 로그 레벨: 기본적으로 INFO 레벨 이상의 로그만 출력합니다.
  • 출력 형식: 기본적으로 콘솔에 출력합니다.

커스터마이징:
Spring Boot 애플리케이션에서 로깅을 커스터마이징하려면 application.properties 또는 application.yml 파일에서 설정하거나, Logback 설정 파일을 사용할 수 있습니다.

application.properties 예시:

logging.level.root=INFO
logging.level.org.springframework.web=DEBUG
logging.file.name=app.log

Logback 설정 파일 예시 (logback-spring.xml):

<configuration>
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <file>app.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

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

요약

  • SLF4J: 다양한 로깅 프레임워크에 대한 추상화 계층을 제공하여 로깅 구현체를 쉽게 교체할 수 있습니다.
  • Logback: 성능과 유연성이 뛰어난 로깅 프레임워크로, SLF4J를 기본 API로 사용합니다.
  • spring-boot-starter-logging: Spring Boot 애플리케이션에서 기본적으로 SLF4J와 Logback을 사용하여 로깅을 설정합니다.

이를 통해 Spring Boot 애플리케이션은 강력하고 유연한 로깅 기능을 쉽게 사용할 수 있습니다.