BE/Spring & Spring Boot

LogBack

baek-dev 2026. 1. 23. 19:27

log를 남기기 위한 설정

SLF4J(Simple Logging Facade for Java)의 구현체

src/main/resources 경로에 'logback-spring.xml' 파일 생성

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- 로그 패턴 변수 설정 -->
    <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>logs/app.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 로그 파일 이름 패턴 -->
            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 보관할 최대 로그 파일 수 (30일) -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 로그 레벨 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>

    <!-- 특정 패키지에 대한 로그 레벨 설정 -->
    <logger name="com.example" level="DEBUG"/> <!-- 예: com.example 패키지의 로그 레벨을 DEBUG로 설정 -->
</configuration>

@Slf4j 와 log.info debug 등등을 활용해 남기고 싶은 로그를 설정

 

 

로그패턴

 

1. %d{yyyy-MM-dd HH:mm:ss} — 로그 발생 시각

  • 로그가 언제 발생했는지
  • 서버 시간 기준
  • 포맷은 Java DateTime 패턴과 동일

운영 환경에서 장애 시간 추적의 핵심 정보

 

 

2. [%thread] — 실행 중인 스레드 이름

  • 어떤 스레드에서 로그가 발생했는지
  • 웹 요청 처리 시 보통 다음과 같이 나옴

http-nio-8080-exec-3

의미: 같은 요청 흐름 추적
동시성 문제 분석 시 중요

 

 

3. %-5level — 로그 레벨

  • INFO, DEBUG, ERROR 등
  • -5는 왼쪽 정렬 + 5칸 고정 폭
    그래서 로그가 이렇게 정렬됨:
    INFO
    WARN
    ERROR

가독성을 위한 포맷 설정

 

 

4. %logger{36} — 로그를 찍은 클래스(또는 패키지)

  • 로그를 발생시킨 Logger 이름
  • 보통 클래스의 풀 패키지명

{36} 의미: 최대 36글자까지만 출력, 너무 길면 앞을 줄여서 표시

가독성과 로그 폭 균형을 위한 옵션

 

 

5. %msg — 실제 로그 메시지

log.info("게시글 조회 성공");
여기서 문자열 그대로 출력됨

'BE > Spring & Spring Boot' 카테고리의 다른 글

커스텀 어노테이션  (0) 2026.01.05
@ConfigurationProperties, @ConstructorBinding  (0) 2025.05.22
@Value  (0) 2025.05.21
@ElementCollection  (0) 2025.05.20
[Spring Boot] HttpClient  (0) 2025.05.12