[Linux] Tomcat의 catalina.out 로그 날짜별 생성

handa·2022년 12월 1일
0
post-thumbnail

웹 서버 구동중 갑자기 느려지는 현상이 발생하였다.
서버를 확인해보니 로그가 쌓이는 디스크의 용량이 가득 찬게 원인이었던 것 같다.(추측) - 로그 정리하고 복구 되었음
tomcat은 catalina.out 파일 하나에 로그가 계속 쌓인다.(첨 부터 날짜별로 나눠주지...)
그래서 날짜별로 로그가 생성되도록 설정을 변경해 주었다.

catalina 로그 날짜별 생성

vi /tomcat8/bin/catalina.sh

스크립트 파일 구조가 다를 수도 있는 것 주의

# /tomcat8/bin/catalina.sh
...
  shift
  if [ -z "$CATALINA_OUT_CMD" ] ; then
   touch "$CATALINA_OUT"
  else
   if [ ! -e "$CATALINA_OUT" ]; then
      if ! mkfifo "$CATALINA_OUT"; then
        echo "cannot create named pipe $CATALINA_OUT. Start aborted."
        exit 1
      fi
    elif [ ! -p "$CATALINA_OUT" ]; then
      echo "$CATALINA_OUT exists and is not a named pipe. Start aborted."
      exit 1
    fi
    $CATALINA_OUT_CMD <"$CATALINA_OUT" &
  fi
  if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
      -D$ENDORSED_PROP="\"$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 $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
      -D$ENDORSED_PROP="\"$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 "&"
...

주석을 넣어줘야되는 부분

  #if [ -z "$CATALINA_OUT_CMD" ] ; then
   #touch "$CATALINA_OUT"
  #else
   #if [ ! -e "$CATALINA_OUT" ]; then
      #if ! mkfifo "$CATALINA_OUT"; then
        #echo "cannot create named pipe $CATALINA_OUT. Start aborted."
        #exit 1
      #fi
    #elif [ ! -p "$CATALINA_OUT" ]; then
      #echo "$CATALINA_OUT exists and is not a named pipe. Start aborted."
      #exit 1
    #fi
    #$CATALINA_OUT_CMD <"$CATALINA_OUT" &
  #fi

설정을 추가 해줘야되는 부분

    shift
    eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
      -D$ENDORSED_PROP="\"$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 \
      | /usr/sbin/rotatelogs "$CATALINA_OUT".%Y-%m-%d 86400 540 &		///요놈 추가
> "$CATALINA_OUT" 2>&1 "&"
  else
    eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
      -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
      -classpath "\"$CLASSPATH\"" \
      -Dcatalina.base="\"$CATALINA_BASE\"" \
      -Dcatalina.home="\"$CATALINA_HOME\"" \
      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
      org.apache.catalina.startup.Bootstrap "$@" start \
      | /usr/sbin/rotatelogs "$CATALINA_OUT".%Y-%m-%d 86400 540 &		///요놈 추가
> "$CATALINA_OUT" 2>&1 "&"

수정된 전체 코드

...
  shift
  #if [ -z "$CATALINA_OUT_CMD" ] ; then
   #touch "$CATALINA_OUT"
  #else
   #if [ ! -e "$CATALINA_OUT" ]; then
      #if ! mkfifo "$CATALINA_OUT"; then
        #echo "cannot create named pipe $CATALINA_OUT. Start aborted."
        #exit 1
      #fi
    #elif [ ! -p "$CATALINA_OUT" ]; then
      #echo "$CATALINA_OUT exists and is not a named pipe. Start aborted."
      #exit 1
    #fi
    #$CATALINA_OUT_CMD <"$CATALINA_OUT" &
  #fi
  if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
      -D$ENDORSED_PROP="\"$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 \
      | /usr/sbin/rotatelogs "$CATALINA_OUT".%Y-%m-%d 86400 540 &
> "$CATALINA_OUT" 2>&1 "&"
  else
    eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
      -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
      -classpath "\"$CLASSPATH\"" \
      -Dcatalina.base="\"$CATALINA_BASE\"" \
      -Dcatalina.home="\"$CATALINA_HOME\"" \
      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
      org.apache.catalina.startup.Bootstrap "$@" start \
      | /usr/sbin/rotatelogs "$CATALINA_OUT".%Y-%m-%d 86400 540 &
> "$CATALINA_OUT" 2>&1 "&"
...

logs 디렉토리에서 확인해보면 밑에 그림과 같이 생성된다

profile
진짜 해보자

0개의 댓글