그동안 log file을 rolling 없이 관리했는데, 그냥 그러다가 문득 rolling 설정을 해야겠다는 생각이 들어서 해보았다.
나는 `xml`로 설정을 진행하였다.
1. `appender` 추가
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/refill.log</file>
<encoder>
<pattern>%d [%thread] %-5level %-50logger{40} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/refill-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
</appender>
위와 같이 `appender`를 `configuration tag` 밑에 추가해줘야 한다.
기본적으로 하나의 파일에 모든 log가 저장된다. 그 하나의 파일명을 정해주는 게 `file tag`이다.
`encoder`는 log 파일에 저장될 log들의 pattern을 지정해준다.
`rollingPolicy`는 파일 rolling 설정에 관한 정책을 정하는 `tag`이다.
나는 `TimeBasedRollingPolicy`를 사용해 시간을 기준으로 `log` 파일을 rolling하고있지만,
`SizeAndTimeBasedRollingPolicy`와 같은 정책을 사용하면 시간과 파일크기를 기준으로 rolling할 수도 있다.
(자세한 건 검색해보자!!)
내가 운영하는 서비스는... 슬프게도 사람들이 별로 안 온다.
그래서 그냥 날짜로만 분류해도 충분하다고 생각해서 시간 기준으로만 찍고 있다.
만약 나중에 로그 파일이 너무 커서 보기 힘들면 RollingPolicy를 바꿀 수도 있을 거 같다.
2. `root`에 `appender-ref` 추가
<root>
<level value="INFO"/>
<appender-ref ref="ROLLING_FILE"/>
<appender-ref ref="CONSOLE"/>
</root>
위와 같이 위에서 만든 `ROLLING_FILE appender`를 `appender-ref`로 등록해줘야 한다.
`root`는 `configuration` 밑에 있어야 한다.
참고용 전체코드
logging:
config: classpath:logback.xml
`application.yml`에 위와 같이 설정할 `xml` 파일을 등록해준다.
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/refill.log</file>
<encoder>
<pattern>%d [%thread] %-5level %-50logger{40} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/refill-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="ROLLING_FILE"/>
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
위 2개의 `include`와 `CONSOLE`을 등록하는 `appender-ref`는 꼭 빼먹지 말고 써야 한다.
그렇지 않으면 `CONSOLE`에 log가 찍히지 않아 정말 답답해질 수 있다.
'Spring Boot' 카테고리의 다른 글
@Repository, @Service, DTO는 MVC 중 뭐지? (0) | 2023.02.21 |
---|---|
API 예외처리 공통화 2 (0) | 2022.04.05 |
API 예외처리 공통화 1 (0) | 2022.04.03 |
Slack에서 error log 알림받기(console 변동 X) (0) | 2022.03.11 |
SQL parameter 값 확인하기 (0) | 2022.01.20 |