이것도 최초에 한번 하면 잘 건드리지 않아서 매번 시작할 때 찾아보게 되서 정리한다.
SpringBoot에는 기본적으로 logback 라이브러리가 포함되어 있으므로 이걸 사용한다.
로그 설정 파일 작성
설정 파일들이 위치한 src/main/resources/
경로에 logback 설정용 파일을 생성한다. 즉, src/main/resources/logback-spring.xml
파일을 만들고 아래 샘플과 같이 설정 내용을 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<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="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.zip</fileNamePattern>
<!-- 최대 보관 기간 (90일 이상 된 로그 자동 삭제) -->
<deleteOldFileStrategy class="ch.qos.logback.core.rolling.helper.SizeAndTimeBasedArchiveRemover">
<maxHistory>90</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</deleteOldFileStrategy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 로그 레벨 설정 -->
<logger name="org.springframework" level="INFO"/>
<logger name="com.foxstarlab.rms" level="DEBUG"/>
<!-- 루트 로거 설정 -->
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
XML위의 샘플 설정은 deleteOldFileStrategy
를 사용하고 있다. logback
버전이 최소 1.3 이상 되어야 한다. 새로 시작하는 프로젝트라면 상관없을 것이다.
로그 패턴
위에서 사용된 로그 패턴은 아래와 같다.
%d{yyyy-MM-dd HH:mm:ss} → 날짜 및 시간
%thread
→ 실행 스레드%level
→ 로그 레벨 (INFO, ERROR 등)%logger{36}
→ 로거 클래스%msg
→ 로그 메시지
로그 파일 저장 위치 및 이름
<fileNamePattern>logs/app-%d{yyyy-MM-dd}.log.zip</fileNamePattern>
- 매일 새로운 로그 파일을 날짜별로 압축된 ZIP 형식으로 생성
- logs/app-2025-02-07.log.zip 형태로 저장
자동 삭제 설정
<maxHistory>90</maxHistory>
- 90일이 지난 로그 파일 자동 삭제
<totalSizeCap>1GB</totalSizeCap>
- 로그 파일의 총 크기가 1GB를 초과하면 가장 오래된 파일부터 삭제
파일 로그와 콘솔 로그 동시 출력
CONSOLE, FILE로 2개의 appender를 정의해서 각각 터미널과 파일 저장으로 동작한다.
로그 레벨 설정
root level=”INFO” → 기본적으로 INFO 이상의 로그만 기록 → 특정 패키지(com.foxstarlab.rms)만 DEBUG 레벨로 출력
Application.xml 설정
필수는 아니지만 로그 라이브러리 설정에 추가적으로 Application에서 어떻게 사용할지 설정할 수 있다. 아래 샘플처럼 사용 가능하다.
logging:
level:
root: INFO
org.springframework: INFO
com.foxstarlab.rms: DEBUG
org.hibernate.SQL: DEBUG
org.hibernate.type.descriptor.sql.BasicBinder: TRACE
org.springframework.security: DEBUG
org.springframework.web: DEBUG
file:
name: logs/app.log
YAML이 정도면 보통 시작할 수 있다.