Spring Boot에서 기본으로 사용하는 로깅 프레임워크는 Logback이다. Logback은 SLF4J(Simple Logging Facade for Java)를 구현한 프레임워크로, 성능과 유연성이 뛰어나고 설정이 간편해서 널리 사용된다.
서비스가 정상적으로 운영되고 있는지 확인하고, 에러가 발생했을 때 문제의 원인을 빠르게 파악하기 위해 로그는 필수다. 콘솔뿐 아니라 파일로 로그를 저장해두면 운영 환경에서도 분석이 가능하고, 로그 레벨별로 원하는 정보만 필터링할 수 있어 실무에서 매우 중요하다.
<?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 엔드포인트를 호출하면 로그가 다음처럼 콘솔에 색깔별로 출력된다.

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