톰캣 catalina.sh 날짜별로 자르기
톰캣을 사용하다보면 로그파일이 점점 커져서 감당이 안되는 경우가 있다...
이를 위해서는 2가지 방법이 있는데...
1. catalina.out파일이 점점 커져서 감당이 안될경우 reset시키는 방법
이 방법은 아주 쉽다는 장점이 있다.
단점으로는,
지금까지의 모든 로그 정보를 날리게 되므로 어제 날짜의 로그 분석도 안되게 된다.
주기적으로 해야 한다 (수작업 또느 크론탭을 사용해서..)
cat /dev/null > catalina.out |
2. catalina.out파일을 날짜별로 생성되도록 하는 방법
if [ "$1" = "-security" ] ; then if [ $have_tty -eq 1 ]; then echo "Using Security Manager" fi shift echo "[START] TOMCAT START via -security"; eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \ -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \ -Djava.security.manager \ -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \ -Dcatalina.base="\"$CATALINA_BASE\"" \ -Dcatalina.home="\"$CATALINA_HOME\"" \ -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \ org.apache.catalina.startup.Bootstrap "$@" start \ "2>&1" \| "$CATALINA_HOME"/bin/rotatelogs "'$CATALINA_OUT'.'%Y-%m-%d'" 86400 540 "&" # 540 for JST offset # 위의 한줄을 추가하여 날짜별로 catalina.out.2017-01-01 형식의 로그 파일이 생성된다. # 하지만 일반적으론 이부분을 실행하지 않는다. 저 아래 else 부분이 진짜 실행되는 부분이다. # 아래는 기본 모드 # >> "$CATALINA_OUT" 2>&1 "&" else eval "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \ -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \ -Dcatalina.base="\"$CATALINA_BASE\"" \ -Dcatalina.home="\"$CATALINA_HOME\"" \ -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \ org.apache.catalina.startup.Bootstrap "$@" start \ "2>&1" \| "$CATALINA_HOME"/bin/rotatelogs "'$CATALINA_OUT'.'%Y-%m-%d'" 86400 540 "&" # 540 for JST offset # 위의 한줄을 추가하여 날짜별로 catalina.out.2017-01-01 형식의 로그 파일이 생성된다. # 아래는 기본 모드 # >> "$CATALINA_OUT" 2>&1 "&" fi if [ ! -z "$CATALINA_PID" ]; then echo $! > "$CATALINA_PID" fi |
단,
실행했는데 "rotatelogs: No such file or directory" 에러가 난다면?
아래 파일을 찾아서 tomcat/bin 밑에 복사하면 된다.
서버에 파일이 없을 경우, httpd(아파치 웹서버)를 설치하면 생성되니 복사하면 된다.
# find / -name rotatelogs /usr/sbin/rotatelogs # cd $TOMCAT_HOME/bin # cp /usr/sbin/rotatelogs . |
끝!!