Tomcat은 Catalina.out에 로그를 남긴다. 이 파일은 단일 파일로 생성되고 별도의 관리를 하지 않으면 크기 제한 없이 한 없이 커진다. 따라서 Catalina.out 파일은 시스템 안정성 을 위한 관리가 필요하다. 이 포스팅은 관리하지 않으면 무한히 커지는 Catalina.out 파일 관리 방법에 관한 것이다. <p>
기본 사항
- 포스팅 설명을 위해 Tomcat설치 경로는 아래에 명시된 경로로 가정하고 이하 TOMCAT_HOME으로 명시
/engn001/tomcat/9.0/servers/ist_8180
catalina.sh
- Catalina.out 파일 생성 설정은 catalina.sh에 있고 경로는 다음과 같음
TOMCATHOME/bin/catalina.sh
관리방법1: Catalina.out 제거
- 첫번째 관리 방법으로 catalina.sh 파일에서 Catalina.out 생성 부분을 수정하여 Catalina.out 파일 생성을 중지함.
- 수정 전
- TOMCAT_HOME/logs에 Catalina.out 생성
if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out fi
- TOMCAT_HOME/logs에 Catalina.out 생성
- 수정 후
- catalina.out 생성 경로에 /dev/null 설정하여 생성을 차단
if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT=/dev/null fi
- catalina.out 생성 경로에 /dev/null 설정하여 생성을 차단
관리방법2: Rolling Catalina.out
- 두번째 방법은 OS의 기능을 활용하여 Catalina.out 파일을 Rolling 할 수 있음.
-
설정 프로세스는 아래와 같음
-
tomcat 파일 생성
-
디렉토리 이동 및 파일 생성
[root@ ]# cd /etc/logrotate.d/ [root@ logrotate.d]# vi tomcat
-
tomcat 파일 내부 스크립트 내용
/logs001/tomcat/9.0/ist_8180/server.log { // Catalina.out 로그파일 경로 copytruncate // 기존 파일 백업 및 삭제 daily // 로그파일을 날짜별로 Rolling rotate 30 // 최대 30일까지만 생성 compress // 로그파일 gzip 압축 missingok // 로그파일 부재시 무시함 notifempty // 로그파일 부재시 신규 생성 하지 않음 dateext // 순환된 로그파일 날짜 확장자 }
-
-
crontab에 tomcat 파일 등록
- 파일 열기
[root@ logrotate.d]# vi /etc/crontab
-
crontab 작성
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 0 0 * * * root run-parts/etc/cron.daily
- 처리 프로세스
- Rolling 수행 프로세스는 먼저 /etc/crontab 스케쥴 동작 이 설정된 시간에 맞춰 일어나고 다음으로 /etc/logrotate.conf 실행 > /etc/logrotate.d 참조 및 최종적으로 tomcat 스크립트가 실행 됨
- 검증 방법
- 아래 스크립트를 수동 실행하여 설정이 잘 동작 하는지 확인
/usr/sbin/logrotate -f/etc/logrotate.conf
- 생성 결과 확인
- 기존 Catalina.out은 압축되고 신규로 Catalina.out 파일 생성 확인
etc-user etc-user 0 Feb 3 07:34 Catalina.out etc-user etc-user 101491 Feb 3 07:03 Catalina.out-20200203.gz
-
더불어 vi /var/log/cron 로그를 확인 하면 아래와 같이 설정된 스케쥴 시점에 cron.daily 실행 로그를 확인 할 수 있음
Feb 4 00:40:01 CROND[5713]: (root) CMD (run-parts /etc/cron.daily) Feb 4 00:40:01 run-parts(/etc/cron.daily)[5713]: starting logrotate Feb 4 00:40:01 run-parts(/etc/cron.daily)[5723]: finished logrotate Feb 4 00:40:01 run-parts(/etc/cron.daily)[5713]: starting man-db.cron Feb 4 00:40:02 run-parts(/etc/cron.daily)[5736]: finished man-db.cron Feb 4 00:40:02 run-parts(/etc/cron.daily)[5713]: starting mlocate Feb 4 00:40:02 run-parts(/etc/cron.daily)[5747]: finished mlocate
-
Appendix: catalina.YYYY.MM-DD.log 제거
- Tomcat은 Catalina.out 파일과 더불어 catalina.YYYY.MM-DD.log 형태의 로그가 생성 됨.
- 해당 로그는 1일 단위로 Rolling되지만 Tomcat에서 생성하는 로그 외에 응용로그(log4j2, logback)은 기록하지 못하므로 활용성이 낮음
-
아래 경로에 존재하는 logging.properties 파일을 삭제하여 생성을 막음.
-
경로1: 별도의 인스턴스 구분 없는 경우
TOMCAT_HOME/conf/logging.properties
-
경로2: 별도의 인스턴스를 사용하는 경우(인스턴스 경로가 TOMCAT_HOME/servers/ist_8180/ 인 경우)
TOMCAT_HOME/servers/ist_8180/conf/logging.properties
-
참고 자료
logrotate.d 설정 및 cron 로그 확인: https://055055.tistory.com/6
댓글남기기