WAS

톰캣 catalina.sh 날짜별로 자르기

DoDaPa 2017. 1. 13. 16:11

톰캣을 사용하다보면 로그파일이 점점 커져서 감당이 안되는 경우가 있다...


이를 위해서는 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 .


끝!!