"오늘의 문제를, 내일의 기록으로 남깁니다."

막연한 이론보다, 구체적인 코드가 필요할 때. 직접 겪고 해결한 문제들을 기록합니다. 실무에서 부딪히는 진짜 이슈와, 내가 이해한 방식 그대로 정리한 가이드입니다.

웹개발/Spring

Spring Boot Logback 설정 완전 정리: 로그 포맷, 파일 분리, Rolling 설정까지

자바를잡아 2025. 8. 13. 07:30
반응형

Spring Boot Logback 설정 완전 정리: 로그 포맷, 파일 분리, Rolling 설정까지

Spring Boot에서 로그를 제대로 설정해두면, 운영 중 발생하는 문제를 추적하고 디버깅하는 데 큰 도움이 됩니다.
기본적으로 Spring Boot는 Logback을 로깅 백엔드로 사용하며, 별도 설정 없이도 로그가 출력됩니다.

하지만 실무에서는 로그 포맷을 지정하거나 파일 저장, 용량 제한, 날짜별 분할(Rolling)이 필요합니다.
이 글에서는 logback-spring.xml을 기반으로 로그 설정을 실무 스타일로 정리합니다.

1. 기본 로그 위치 및 형식 확인

Spring Boot는 기본적으로 콘솔에 로그를 출력하며, logback-classic이 자동 포함되어 있습니다.
별도 설정이 없을 경우 로그 파일은 생성되지 않습니다.

2. 로그 설정 파일 위치

src/main/resources 경로에 logback-spring.xml 파일을 생성합니다.
이 이름을 사용하면 Spring 프로파일 연동이 가능합니다.

3. 기본 로그 설정 예제


<configuration scan="true">

    <property name="LOG_PATH" value="logs"/>
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>

</configuration>

4. 설정 설명

  • CONSOLE: 콘솔 로그 출력용
  • RollingFileAppender: 날짜별 로그 파일 생성
  • TimeBasedRollingPolicy: 하루 단위로 로그 파일 분할
  • maxHistory: 최대 보관 일수

5. profile 별 로그 레벨 다르게 설정


<springProfile name="dev">
    <root level="DEBUG">
        <appender-ref ref="CONSOLE"/>
    </root>
</springProfile>

<springProfile name="prod">
    <root level="INFO">
        <appender-ref ref="FILE"/>
    </root>
</springProfile>

- 개발 환경에서는 DEBUG 로그까지 출력
- 운영 환경에서는 FILE에만 기록하고 콘솔 로그 생략 가능

6. logback vs log4j vs slf4j 차이 간단 정리

  • SLF4J: 로깅 추상화 API (인터페이스)
  • Logback: SLF4J 구현체 (Spring Boot 기본)
  • Log4j: 예전부터 쓰이던 구현체 (보안 이슈로 잘 안 씀)

7. application.yml 로그 레벨 조정


logging:
  level:
    root: INFO
    com.example: DEBUG

- 특정 패키지만 DEBUG로 지정하여 쿼리 로그 등 확인 시 유용
- 이 설정은 logback-spring.xml과 병행 사용 가능

8. 실전 팁

  • 파일 로그 경로는 logs/ 또는 /var/log/app 식으로 분리
  • 개발 환경에선 console + file 둘 다 쓰고, 운영에서는 file만 쓰는 게 일반적
  • 운영 로그 분석을 위해 ELK(Stack) 또는 CloudWatch와 연계 가능
  • 에러 발생 시 %ex 패턴으로 예외 메시지 출력 필수

맺음말

Spring Boot에서 로그 설정은 프로젝트의 규모가 커질수록 필수적인 요소가 됩니다.
logback-spring.xml을 잘 구성해두면, 운영 중 발생하는 문제를 훨씬 빠르게 진단할 수 있고,
DevOps 팀이나 로그 수집 시스템과의 연동도 간편해집니다.

이번 설정 예제를 바탕으로 프로젝트에 맞는 로그 전략을 직접 구성해보시기 바랍니다.

반응형