로그 파일이 계속해서 쌓이면 크기가 과도하게 커질 수 있으며, 이로 인해 로그를 읽거나 분석하는 데 많은 메모리와 시간이 소요될 수 있다. 이러한 문제를 방지하기 위해 일정 시간이 지나거나 파일 크기가 특정 용량을 초과하면 기존 로그를 백업하고 새로운 로그 파일을 생성해야 한다.
백업된 로그 파일이 일정 개수를 초과하거나 오래되면 자동으로 삭제하도록 설정할 수 있다. 이러한 로그 파일의 주기적인 관리 과정을 로그 로테이션(Logrotate) 이라고 한다.
지난 번에는 GC 로그를 날짜별로 분리하여 저장하고, 최근 한 달 치만 유지하도록 logrotate를 활용한 로그 관리 방식을 적용했다.
이번에 작업한 톰캣 로그파일은 기본 기능에 의해 이미 날짜별로 자동 생성되고 있으므로 logrotate를 사용해 별도로 회전할 필요 없이, 최근 10개 로그만 남기고 나머지는 삭제하는 스크립트를 cron에 등록하는 방식이 더 적합하다고 생각했다.
🔹 크론탭(Crontab)이란?
리눅스에서 특정 작업을 주기적으로 실행하는 기능이다.
예를 들어 매일 새벽 3시에 logrotate를 실행하거나, 10분마다 특정 스크립트를 실행하는 등의 자동 작업을 설정할 수 있다.
로그 파일을 주기적으로 삭제하는 스크립트와 크론탭 설정이 이미 적용이 되어있어 파일 갯수만 줄여 수정해주었다.
처음부터 등록한다고 하면 아래와 같은 순서로 적용하면 된다.
#로그 삭제 스크립트 작성
vim /usr/share/tomcat/delLogs.sh
#아래 내용 붙여넣고 저장
#catalina.out은 비우고, 수정일 기준 10일이 지난 로그 파일들만 삭제
#즉, 최근 10일 이내의 로그 파일은 남겨둠
cd /usr/share/tomcat/logs;
cat /dev/null > catalina.out;
find /usr/share/tomcat/logs/ -mtime +10 -name 'catalina*' -exec rm -f {} +;
find /usr/share/tomcat/logs/ -mtime +10 -name 'manager*' -exec rm -f {} +;
find /usr/share/tomcat/logs/ -mtime +10 -name 'localhost*.log' -exec rm -f {} +;
find /usr/share/tomcat/logs/ -mtime +10 -name 'localhost_access_log*.txt' -exec rm -f {} +;
find /usr/share/tomcat/logs/ -mtime +10 -name 'host-manager*.log' -exec rm -f {} +;
#파일에 대해 현재 파일 소유자, 소유 그룹, 그 외 사용자에게 실행 권한(x) 부여
chmod +x /usr/share/tomcat/delLogs.sh
#크론탭 등록(매일 자정에 실행)
(crontab -l 2>/dev/null; echo "0 0 * * * /usr/share/tomcat/delLogs.sh") | crontab -
#등록 확인
crontab -l
#출력 예:
0 0 * * * /usr/share/tomcat/delLogs.sh
➡️ 크론탭 등록 확인 결과