Dev.GA

[WAS] Tomcat 로그 설정(무분별하게 커지는 catalina.out 용량 설정하기) 본문

Dev.Back-End/WAS

[WAS] Tomcat 로그 설정(무분별하게 커지는 catalina.out 용량 설정하기)

Dev.GA 2018. 4. 9. 11:19



[WAS] Tomcat 로그 설정(무분별하게 커지는 catalina.out 용량 설정하기)



Apache Tomcat을 사용하다보면 catalina.out이라는 tomcat로그가 쌓인다. 이 로그파일을 관리하지 않는다면 catalina.out은 삭제되지 않고 계속해서 로그가 쌓이게 되는 문제가 발생된다. 이를 방치하면 몇십 GB는 물론이며 몇백 GB까지 올라가 디스크 용량에 무리를 주게 되는데 이를 관리하는 방법에 대해 알아보자.


방법은 간단하다. Tomcat 경로(/tomcat경로/bin/)에 있는 catalina.sh 파일을 수정해주면 된다.


 Before
elif [ "$1" = "start" ] ; then

...(생략)...

shift
  touch "$CATALINA_OUT"
  if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    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 \
      >> "$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 \
      >> "$CATALINA_OUT" 2>&1 "&"

  fi

  if [ ! -z "$CATALINA_PID" ]; then
    echo $! > "$CATALINA_PID"
  fi

  echo "Tomcat started."


"$CATALINA_OUT" 이부분으로 검색하여 start구문을 찾아 위에 강조된 부분을 아래와 같이 수정하면 된다.

 After

elif [ "$1" = "start" ] ; then


...(생략)...

shift
  #touch "$CATALINA_OUT"
  if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    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" \| /usr/sbin/rotatelogs "$CATALINA_OUT".%Y-%m-%d 86400 540 "&"
      #>> "$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" \| /usr/sbin/rotatelogs "$CATALINA_OUT".%Y-%m-%d 86400 540 "&"
      #>> "$CATALINA_OUT" 2>&1 "&"
  fi

  if [ ! -z "$CATALINA_PID" ]; then
    echo $! > "$CATALINA_PID"
  fi

  echo "Tomcat started."


상단 touch를 이용해 CATALINA.OUT 로그파일을 생성하는 부분을 주석처리하고


하단에 로그를 수집하여 파일에 저장하는 형태를 날짜 형태로 바꾸어 주면된다.


이렇게 수정하면 catalina.out에 용량이 늘어나지 않게 되면서 날짜별로 로그파일이 생성된다.

Comments