Spring Boot 로깅 설정 가이드 - Logback 설정과 활용

Published: (December 30, 2025 at 11:21 PM EST)
4 min read
Source: Dev.to

Source: Dev.to

기본 로깅 설정

application.properties에서 로그 레벨 설정

# Spring 프레임워크 로그 레벨
logging.level.org.springframework=info

# Hibernate 로그 레벨
logging.level.org.hibernate=info
logging.level.org.hibernate.sql=info

# 애플리케이션 로그 레벨
logging.level.com.myapp=debug

Web 디버깅 로그

Spring Web 관련 상세 로그를 보려면:

logging.level.org.springframework.web=DEBUG

로그 레벨 종류

레벨설명사용 상황
TRACE가장 상세한 로그아주 세밀한 디버깅
DEBUG디버깅용 로그개발 환경 디버깅
INFO정보성 로그일반적인 운영 정보
WARN경고 로그잠재적 문제 상황
ERROR에러 로그오류 발생 시

Logback XML 설정

더 세밀한 로깅 설정이 필요하다면 logback-spring.xml 또는 logback.xml 파일을 사용합니다.

logback-spring.xml 예시

<!-- 예시 XML 내용 (필요에 따라 수정) -->
<configuration scan="true">
    <property name="LOG_HOME" value="/var/log/myapp"/>
    <property name="FILE_PREFIX_NAME" value="application"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} (%line) - %msg%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>TRACE</level>
        </filter>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/${FILE_PREFIX_NAME}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${FILE_PREFIX_NAME}.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} - %msg%n</pattern>
        </encoder>
    </appender>

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

주요 설정 요소 설명

scan 속성

<!-- scan="true" 로 설정하면 설정 파일 변경을 감지하여 런타임에 재로드합니다. -->

Pattern 포맷

패턴설명
%d{HH:mm:ss.SSS}시:분:초.밀리초
%d{yyyy-MM-dd HH:mm:ss}년-월-일 시:분:초
%thread스레드 이름
%-5level로그 레벨 (5자리 왼쪽 정렬)
%logger{36}로거 이름 (최대 36자)
%line라인 번호
%msg로그 메시지
%n줄바꿈

Profile별 설정

springProfile 태그로 환경별 다른 설정을 적용할 수 있습니다:

<springProfile name="dev">
    <!-- 개발 환경 전용 설정 -->
</springProfile>

<springProfile name="prod">
    <!-- 운영 환경 전용 설정 -->
</springProfile>

롤링 정책

TimeBasedRollingPolicy (시간 기반 롤링)

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${LOG_HOME}/myapp.%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>30</maxHistory>
</rollingPolicy>

SizeAndTimeBasedRollingPolicy (크기와 시간 기반 롤링)

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>${LOG_HOME}/myapp.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <maxFileSize>100MB</maxFileSize>
    <maxHistory>30</maxHistory>
    <totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>

Logger 사용법

SLF4J Logger 사용

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    private static final Logger logger = LoggerFactory.getLogger(UserService.class);

    public void createUser(String username) {
        logger.info("Creating user: {}", username);

        try {
            // 비즈니스 로직
            logger.debug("User creation successful");
        } catch (Exception e) {
            logger.error("Failed to create user: {}", username, e);
        }
    }
}

Lombok @Slf4j 사용

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Slf4j
@Service
public class UserService {

    public void createUser(String username) {
        log.info("Creating user: {}", username);
    }
}

로그 파일 설정 (application.properties)

간단한 파일 로깅은 properties 파일로도 가능합니다:

# 로그 파일 경로
logging.file.path=/var/log/myapp

# 또는 파일 이름 직접 지정
logging.file.name=/var/log/myapp/application.log

# 로그 파일 최대 크기
logging.logback.rollingpolicy.max-file-size=10MB

# 로그 파일 보관 기간
logging.logback.rollingpolicy.max-history=30

# 로그 패턴
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

결론

Spring Boot의 로깅 시스템은 간단한 설정부터 상세한 커스터마이징까지 유연하게 대응합니다. 개발 환경에서는 콘솔 로그를, 운영 환경에서는 파일 로그와 적절한 롤링 정책을 설정하세요. Profile별 설정을 활용하면 환경에 맞는 로깅 전략을 쉽게 구현할 수 있습니다.

Back to Blog

Related posts

Read more »

Spring Boot Actuator - 애플리케이션 모니터링 가이드

Spring Boot Actuator는 운영 중인 애플리케이션의 상태를 모니터링하고 관리하기 위한 기능을 제공합니다. 설정, 메모리, CPU, 환경 변수, Bean 정보 등 다양한 정보를 확인할 수 있습니다. 설정 Gradle gradle implementation 'org.spring...