스프링 부트에서 의존성을 활용해 로그를 저장하는 방법은 2가지가 존재합니다.
Logback + slf4j 조합으로 사용하는 방식과 Log4j를 사용하는 방법인데, 프로그램별로 원하는 로깅 수준에 따라 선택이 가능합니다.
스프링부트의 기본 설정은 Logback + slf4j 조합으로 사용하며, Log4j보다 간단하고 가볍고, 빠르며 효율적입니다.
반대로 Log4j는 설정이 비교적 복잡하지만 더 유연하며, 높은 확장성 및 세밀한 커스터마이징이 가능합니다.
오늘은 그중 일반적으로 사용되는 logback으로 사용하겠습니다.

Spring boot 설치는 되어있을거라 가정합니다.
1. loback 세팅
먼저 프로젝트에서 ./src/main/resources/logback.xml을 만듭니다.
그다음 기본 세팅을 하는 코드를 넣습니다. 콘솔에 출력되는 로그와 파일에 출력되는 로그를 설정했고, 데일리로 로그 파일을 생성하며 최대 보관 기간은 30일, 로그 레벨은 info로 했습니다.
<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="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/Users/woong/Downloads/log/logs/logback.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 파일 이름에 날짜를 추가하여 일별로 롤링 -->
<fileNamePattern>/logs/logback-%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 최대 보관 기간 (30일) 설정 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 로그 레벨 설정 -->
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="ROLLING" />
</root>
</configuration>
package com.woong.log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class LogApplication {
public static void main(String[] args) {
testLogback();
SpringApplication.run(LogApplication.class, args);
}
public static void testLogback() {
Logger logger = LoggerFactory.getLogger(LogApplication.class);
logger.info("Logback + slf4j 조합 테스트 start");
try {
logger.debug("Performing task");
throw new Exception();
} catch (Exception e) {
logger.error("An error occurred while performing the task", e);
}
logger.info("Logback + slf4j 조합 테스트 end");
}
}