반응형

Spring Boot에서 로그(Log)를 설정하는 방법은 매우 유연하며, 기본적으로 SLF4JLogback을 사용합니다. Spring Boot의 로그 설정 방법을 단계별로 자세히 설명하겠습니다.


1. 기본 로그 설정

Spring Boot는 기본적으로 spring-boot-starter-logging 의존성을 포함하여 기본 로그 설정을 제공합니다.

기본 동작

  • Spring Boot는 기본적으로 Logback을 사용합니다.
  • 애플리케이션이 시작될 때 INFO 레벨 로그가 출력됩니다.
  • 출력 대상은 콘솔이며, application.properties나 application.yml로 설정을 커스터마이징할 수 있습니다.

2. 로그 레벨 설정

application.properties 파일로 설정

# 기본 로깅 레벨 (DEBUG, INFO, WARN, ERROR, TRACE, OFF)
logging.level.root=INFO

# 특정 패키지나 클래스의 로깅 레벨
logging.level.org.springframework.web=DEBUG
logging.level.com.example.myapp=TRACE

application.yml 파일로 설정

logging:
  level:
    root: INFO
    org.springframework.web: DEBUG
    com.example.myapp: TRACE

로그 레벨 설명

  • TRACE: 가장 세부적인 정보로 디버깅에 유용합니다.
  • DEBUG: 디버깅 정보입니다.
  • INFO: 일반적인 정보를 나타냅니다.
  • WARN: 경고 메시지를 나타냅니다.
  • ERROR: 오류 메시지를 나타냅니다.
  • OFF: 로그를 비활성화합니다.

3. 로그 출력 형식 설정

기본 로그 출력 형식

Spring Boot는 기본적으로 %d{yyyy-MM-dd HH:mm:ss} - %msg%n 형식으로 로그를 출력합니다.

커스터마이징

application.properties 파일로 설정

# 로그 출력 형식 설정
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

application.yml 파일로 설정

logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
    file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"

4. 로그 파일 저장 설정

Spring Boot는 로그를 파일로 저장할 수도 있습니다.

로그 파일 설정 예제

application.properties

# 로그 파일 저장 경로와 이름
logging.file.name=logs/myapp.log

# 로그 파일 크기와 백업 설정
logging.file.max-size=10MB
logging.file.max-history=7

application.yml

logging:
  file:
    name: logs/myapp.log
    max-size: 10MB
    max-history: 7

5. Logback 설정

Spring Boot는 기본적으로 Logback을 사용하며, 커스터마이징하려면 logback-spring.xml 파일을 사용할 수 있습니다.

Logback 설정 파일 예제

logback-spring.xml

<configuration>
    <!-- 콘솔 출력 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 파일 출력 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/myapp.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/myapp.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <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>

Logback 파일 위치

  • src/main/resources/logback-spring.xml
  • Spring Boot는 logback-spring.xml을 우선적으로 사용합니다.

6. SLF4J를 사용한 로깅

Spring Boot는 SLF4J를 기본적으로 포함하고 있으며, 코드에서 사용 방법은 다음과 같습니다.

코드에서 로깅 사용 예제

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.debug("Debug message");
        logger.info("Info message");
        logger.warn("Warning message");
        logger.error("Error message");
    }
}

7. 기타 유용한 설정

컬러 로그 활성화

Spring Boot는 기본적으로 컬러 로그를 지원합니다. 단, 이를 비활성화하려면 다음과 같이 설정합니다.

# 컬러 로그 비활성화
spring.output.ansi.enabled=never

외부 구성 파일 로드

로그 설정을 외부 파일로 관리할 수도 있습니다.

logging.config=classpath:my-logback-config.xml

결론

Spring Boot에서 로그 설정은 기본 application.properties 또는 application.yml로 간단하게 처리할 수 있으며, 필요에 따라 logback-spring.xml을 사용하여 더욱 세부적인 설정이 가능합니다. 위의 단계를 통해 로그를 효과적으로 관리하고 분석할 수 있습니다.

반응형

+ Recent posts