더 높은 가독성과 고품질의 글을 작성하기 위해 티스토리로 이전하였습니다.
https://anggeum.tistory.com/entry/Tomcat-Crontab을-이용한-톰캣-로그-관리
톰캣 로그의 종류 중 보통 catalina.out
에 중요 로그파일이 모두 적재되는것을 알 수 있다. 이 catalina.out이 너무 커지면 몇만, 몇십만 이상의 문장이 적재되어 로그분석이 힘들 수 있고, 경우에 따라 100기가가 넘어가면 톰캣이 중지된다는 사례도 있다.
따라서 보기 좋게, 혹은 안정성을 위해 날짜별로 쪼개고 그 날짜가 오래된것은 지우는 과정이 필요하다
톰캣 로그 종류
(1). catalina.out
: 서버상에서 발생한 모든 내용(서버의 기동,정지,개시 등)을 기록한 파일이다.
그렇기 때문에 생기는 로그의 양이 방대하다.
날짜별, 혹은 시간별로 로그를 분리하는것은 일반적으로 catalina.out에 사용한다.
(2). catalina.yyyy-mm-dd.log
: 톰캣에서 생기는 로그만을 기록한다.
Standard output(표준 스트림), Standard error(표준에러)의 로깅은 제외
(3). host-manager.log
: Tomcat Host Manager Web app 로그 (가상호스트 매니저)
(4). manager.log
: Tomcat Manager Web App 로그 (웹콘솔)
(5). localhost.log
: host(특정 가상호스트 대상)한정 로그
로그 저장 위치 원하는 곳으로 변경하는 방법
logging.properties
, catalina.sh
, server.xml
등에서 디렉토리를 변경하는 방법${catalina.base}/logs
디렉토리를 원하는 디렉토리로 soft link 시키는 방법1-1. 톰캣 server.xml 수정
[root@localhost]# vim /usr/local/tomcat8.5/conf/server.xml
# 수정 전: default 설정
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
# 수정 후: /data/tomcat_logs로 경로 설정
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/tomcat_logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
1-2. logging.properties 수정
[root@localhost] vim /usr/local/tomcat8.5/conf/logging.properties
# java.util.logging.FileHandler = 날짜별로 롤링되는 특정파일에 출력하는 핸들러
# 수정 전 ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
# 수정 후: /data/tomcat_logs
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = /data/tomcat_logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
1-3. catalina.sh 수정
[root@localhost] vim /usr/local/tomcat8.5/bin/catalina.sh
# 수정 전 ${catalina.base}/logs
228 if [ -z "$CATALINA_OUT" ] ; then
229 CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
# 수정 후: /data/tomcat_logs
228 if [ -z "$CATALINA_OUT" ] ; then
229 CATALINA_OUT=/data/tomcat_logs/catalina.out
[root@localhost] systemctl stop tomcat
[root@localhost] systemctl start tomcat
[root@localhost] cat /data/tomcat_logs/catalina.out
---
23-Aug-2021 17:01:40.678 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/8.5.70
23-Aug-2021 17:01:40.681 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Aug 9 2021 16:17:14 UTC
23-Aug-2021 17:01:40.681 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.70.0
23-Aug-2021 17:01:40.682 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
23-Aug-2021 17:01:40.682 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 4.14.238-182.422.amzn2.x86_64
23-Aug-2021 17:01:40.682 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
23-Aug-2021 17:01:40.683 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.amzn2.0.1.x86_64/jre
23-Aug-2021 17:01:40.686 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.8.0_302-b08
23-Aug-2021 17:01:40.686 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Red Hat, Inc.
23-Aug-2021 17:01:40.687 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat8.5
23-Aug-2021 17:01:40.687 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat8.5
23-Aug-2021 17:01:40.688 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat8.5/conf/logging.properties
---
로그 처리 방법
2-1. crontab 서비스 시작
# crontab 서비스 시작
[root@localhost] service crond start
2-2. logmanager.sh 스크립트 작성
[root@localhost] vim /data/tomcat_logs/logmanager.sh
#!/bin/bash
# 톰캣 로그 디렉토리
TOMCAT_LOG=/data/tomcat_logs
#오늘 날짜 가져옴
DATE='date +%Y_%m_%d'
#압축처리할 타겟 파일
target_file="*.log.$DATE"
#압축처리
tar cvf - $TOMCAT_LOG$target_file | gzip -c > $TOMCAT_LOG$target_file.gz
#오래된 로그 파일 삭제(catalina로 시작하는 10일 이상 지난 파일들 삭제)
find $TOMCAT_LOG -mtime +10 -name catalina* -exec rm -f {} \;
2-3. Crontab 설정
# 권한 설정
[root@localhost] chmod 755 /data/tomcat_logs/logmanager.sh
[root@localhost] crontab -e
# 매일 0:30 분에 logmanager.sh 파일 실행
30 0 * * * /data/tomcat_logs/logmanager.sh
Tomcat의 logs와 webapps 폴더 변경 https://forgiveall.tistory.com/230
(★) Tomcat 의 logging.properties 및 log 디렉토리 설정
https://littlecarbb.tistory.com/entry/Tomcat-의-loggingproperties-및-log-디렉토리-설정
(★) Server 4. Tomcat log에 대한 이해와 분리 방법
https://zunoxi.github.io/infra/2020/07/03/infra-server-hourlylog/