catalina.out 로그 파일을 logrotate를 이용해 일자별로 나눠 저장하기

매뉴얼웍스는 아파치 톰캣을 사용합니다. 리눅스 환경에서 catalina.out 로그 파일을 logrotate를 통해 일자별로 나눠 저장하는 방법을 설명합니다. 이 설정은 매뉴얼웍스를 재시작하지 않고도 적용할 수 있습니다.

logrotate 설정 파일 만들기

다음 명령어를 입력합니다.

sudo vi /etc/logrotate.d/3rabbitz

관리 권한이 필요합니다(sudo 사용).

설정 내용 작성하기

앞에서 만든 파일에 다음 내용을 입력합니다.

/3rabbitz/logs/catalina.out {
    daily
    rotate 14
    missingok
    notifempty
    compress
    copytruncate
    dateext
    dateformat -%Y-%m-%d
}

첫 줄은 catalina.out 로그 파일의 실제 위치로 바꿔줍니다(예: /home/rabbitz/app-1-0/logs/catalina.out).

필요한 옵션을 추가 또는 삭제합니다.

logrotate 주요 옵션

옵션

설명

예시

daily

매일 로그 회전

daily
weekly

매주 회전

weekly
monthly

매월 회전

monthly
rotate N

회전 파일을 N개까지 보관

rotate 7 → 7개까지 유지
compress

회전된 로그 파일을 gzip으로 압축

compress → .gz로 저장
delaycompress

첫 번째 회전 로그는 압축하지 않음(2번째부터 압축)

delaycompress
missingok

로그 파일 없어도 에러 없이 무시

missingok
notifempty

로그 파일이 비어 있으면 회전하지 않음

notifempty
copytruncate

기존 로그 파일 유지하면서 내용만 잘라냄(프로세스를 재시작하지 않아도 됨)

copytruncate
dateext

회전된 로그 파일 이름에 날짜를 추가

dateext → log-2025-07-08.gz
dateformat

날짜 형식 지정(기본: -%Y%m%d)

dateformat -%Y-%m-%d
create MODE OWNER GROUP

새 로그 파일을 생성할 때 권한 지정

create 644 tomcat tomcat
prerotate / postrotate

회전 전후에 명령 실행

postrotatesystemctl reload nginxendscript
size N

로그 파일이 N 이상일 때 회전 (단위: M/K/G)

size 10M
maxage N

N일 이상 된 로그만 회전

maxage 30

daily, weekly, monthly 등의 옵션에 따라 파일이 바뀌는 시간을 확인하려면 다음 명령어를 실행합니다.

cat /etc/crontab

리눅스 환경에서는 logrotate가 cron 또는 systemd timer를 통해 자동 실행됩니다.

주기

항목

기본 값

매일

/etc/cron.daily

매일 오전 6시 25분

매주

/etc/cron.weekly

매주 일요일 오전 6시 47분

매월

/etc/cron.monthly

매월 1일 오전 6시 52분

따라서 daily 옵션을 사용하면 매일 오전 25분에 로그 파일이 바뀝니다.