Spring Boot에서 Logback 설정하는 방법 정리

송현진·2025년 3월 31일

Spring Boot

목록 보기
2/23

logback 이란?

Spring Boot에서 기본으로 사용하는 로깅 프레임워크는 Logback이다. Logback은 SLF4J(Simple Logging Facade for Java)를 구현한 프레임워크로, 성능과 유연성이 뛰어나고 설정이 간편해서 널리 사용된다.

❓왜 로그를 남겨야 할까

서비스가 정상적으로 운영되고 있는지 확인하고, 에러가 발생했을 때 문제의 원인을 빠르게 파악하기 위해 로그는 필수다. 콘솔뿐 아니라 파일로 로그를 저장해두면 운영 환경에서도 분석이 가능하고, 로그 레벨별로 원하는 정보만 필터링할 수 있어 실무에서 매우 중요하다.

🔧 logback-spring.xml 설정 설명

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 로그 출력 형식을 지정. 날짜, 스레드, 로그레벨, 로거 이름, 메시지 등 포함 -->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%5level) %cyan(%logger) - %msg%n"/>
    <!-- 로그 파일이 저장될 기본 경로와 파일 이름을 지정 -->
    <property name="LOG_FILE" value="logs/application.log" />

  	<!-- 콘솔에 로그를 출력하기 위한 appender -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

  	<!-- 로그 파일로 출력하는 appendex. 날짜 및 용량에 따라 롤링되도록 설정 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_FILE}</file>
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
          	<!-- logs/ 폴더에 날짜+인덱스 형식으로 로그 파일 저장 -->
            <fileNamePattern>logs/application.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
          	<!-- 로그 파일 하나당 최대 100MB까지 저장 -->
            <maxFileSize>100MB</maxFileSize>
          	<!-- 최대 30일치 로그 파일 저장 -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

  	<!-- 해당 패키지의 로그 레벨을 DEBUG로 별도 설정한 것 -->
    <logger name="com.example.coupangclone" level="DEBUG"/>

  	<!-- 전체 애플리케이션의 기본 로그 레벨 및 appender 지정 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

🎨 로그 색상 커스터마이징

로그 레벨은 %highlight()를 사용해 자동으로 색상이 입혀지고, 로거 이름이나 메시지 등 다른 부분은 Spring Boot에서 제공하는 %cyan(), %magenta(), %yellow() 같은 단축 색상 표현을 사용한다.


로그 레벨콘솔 색상 (기본)
TRACE회색 (FAINT)
DEBUG흰색 (DEFAULT)
INFO파란색 (BLUE)
WARN노란색 (YELLOW)
ERROR빨간색 (RED)

이 색상은 ANSI 컬러 코드 기반이며, Spring Boot의 AnsiColor enum을 통해 커스터마이징도 가능하다.

✅ 실제 로그 출력 테스트

간단한 로그 출력 테스트를 위해 REST API 엔드포인트 하나를 만들었다.

@Slf4j
@RestController
@RequestMapping("/api/log-test")
public class LogTestController {

    @GetMapping
    public ResponseEntity<String> logTest() {
        log.info("INFO 로그입니다.");
        log.warn("WARN 로그입니다.");
        log.debug("DEBUG 로그입니다.");
        log.error("ERROR 로그입니다.");
        return ResponseEntity.ok("로그 확인 완료");
    }
}

결과 확인

/api/log-test 엔드포인트를 호출하면 로그가 다음처럼 콘솔에 색깔별로 출력된다.

📝 마무리

이제 로그백 설정을 통해 콘솔과 파일 모두에 로그를 남기고, 로그 레벨에 따라 색상도 다르게 출력할 수 있다. 운영 환경에서도 로그 분석이 쉬워지고, 디버깅도 훨씬 효율적으로 할 수 있게 된다.

profile
개발자가 되고 싶은 취준생

0개의 댓글