스프링부트에서 로그 파일 관련 설정

이것도 최초에 한번 하면 잘 건드리지 않아서 매번 시작할 때 찾아보게 되서 정리한다.

SpringBoot에는 기본적으로 logback 라이브러리가 포함되어 있으므로 이걸 사용한다.

로그 설정 파일 작성

설정 파일들이 위치한 src/main/resources/ 경로에 logback 설정용 파일을 생성한다. 즉, src/main/resources/logback-spring.xml 파일을 만들고 아래 샘플과 같이 설정 내용을 작성한다.

<?xml version="1.0" encoding="UTF-8"?>
<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/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 로그 파일 이름 패턴 (날짜별로 파일 생성) -->
            <fileNamePattern>logs/app-%d{yyyy-MM-dd}.log.zip</fileNamePattern>

            <!-- 최대 보관 기간 (90일 이상 된 로그 자동 삭제) -->
            <deleteOldFileStrategy class="ch.qos.logback.core.rolling.helper.SizeAndTimeBasedArchiveRemover">
                <maxHistory>90</maxHistory>
                <totalSizeCap>1GB</totalSizeCap>
            </deleteOldFileStrategy>
        </rollingPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 로그 레벨 설정 -->
    <logger name="org.springframework" level="INFO"/>
    <logger name="com.foxstarlab.rms" level="DEBUG"/>

    <!-- 루트 로거 설정 -->
    <root level="DEBUG">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>

</configuration>
XML

위의 샘플 설정은 deleteOldFileStrategy 를 사용하고 있다. logback 버전이 최소 1.3 이상 되어야 한다. 새로 시작하는 프로젝트라면 상관없을 것이다.

로그 패턴

위에서 사용된 로그 패턴은 아래와 같다.

  • %d{yyyy-MM-dd HH:mm:ss} → 날짜 및 시간
  • %thread → 실행 스레드
  • %level → 로그 레벨 (INFO, ERROR 등)
  • %logger{36} → 로거 클래스
  • %msg → 로그 메시지

로그 파일 저장 위치 및 이름

<fileNamePattern>logs/app-%d{yyyy-MM-dd}.log.zip</fileNamePattern>
  • 매일 새로운 로그 파일을 날짜별로 압축된 ZIP 형식으로 생성
  • logs/app-2025-02-07.log.zip 형태로 저장

자동 삭제 설정

<maxHistory>90</maxHistory>
  • 90일이 지난 로그 파일 자동 삭제
<totalSizeCap>1GB</totalSizeCap>
  • 로그 파일의 총 크기가 1GB를 초과하면 가장 오래된 파일부터 삭제

파일 로그와 콘솔 로그 동시 출력

CONSOLE, FILE로 2개의 appender를 정의해서 각각 터미널과 파일 저장으로 동작한다.

로그 레벨 설정

root level=”INFO” → 기본적으로 INFO 이상의 로그만 기록 → 특정 패키지(com.foxstarlab.rms)만 DEBUG 레벨로 출력

Application.xml 설정

필수는 아니지만 로그 라이브러리 설정에 추가적으로 Application에서 어떻게 사용할지 설정할 수 있다. 아래 샘플처럼 사용 가능하다.

logging:
  level:
    root: INFO
    org.springframework: INFO
    com.foxstarlab.rms: DEBUG
    org.hibernate.SQL: DEBUG
    org.hibernate.type.descriptor.sql.BasicBinder: TRACE
    org.springframework.security: DEBUG
    org.springframework.web: DEBUG
  file:
    name: logs/app.log
YAML

이 정도면 보통 시작할 수 있다.

Leave a Comment