반응형
1. 로그를 관리하지 않으면 발생하는 문제점
톰캣 실행으로 발생하는 모든 로그는 catalina.out에 기본으로 기록된다.
catalina.out을 관리하지 않으면 로그는 계속해서 쌓이고 용량은 계속 늘어나 여러 문제가 발생할 수 있다.
2. catalina.out에 로그 기록하지 않는 방법
- /bin 디렉토리 안에 catalina.sh 파일에 설정
a. 원본
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
b. 수정본
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 "&"
>> /dev/null 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 "&"
>> /dev/null 2>&1 &
fi
위와 같이
- touch "$CATALINA_OUT" 부분은 주석처리
- >> "$CATALINA_OUT" 2>&1 "&" 부분은 >> /dev/null 2>&1 &으로
수정하면 서버 상태 로그만 catalina.yyyy-mm-dd.log 파일에 기록되고 catalina.out에는 로그가 기록되지 않는다.
※ 주의사항
프로그램 실행과정에서 발생하는 어떠한 로그도 catalina.out에 기록되지 않기 때문에 log4j 등 프로그램에서 발생하는 로그를 기록하려면 별도의 작업이 필요하다.
3. catalina.out 날짜별로 저장하는 방법
- touch "$CATALINA_OUT" 부분은 주석처리
- >> "$CATALINA_OUT" 2>&1 "&" 부분은 >> "$CATALINA_OUT".$(date '+%Y-%m-%d') 2>&1 "&"으로
수정하면 catalina.out.yyyy-mm-dd 형식으로 매일 하나씩 생성, 저장된다.
a. 수정본
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 "&"
>> "$CATALINA_OUT".$(date '+%Y-%m-%d') 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 "&"
>> "$CATALINA_OUT".$(date '+%Y-%m-%d') 2>&1 "&"
fi
4. logrotate 사용하여 관리하는 방법
- logrotate 설정은 /etc/logrotate.d 디렉토리 안에 별도의 설정 파일을 만들어 저장.
- 1. /etc/logrotate.d 디렉토리로 이동
- 2. tomcat 파일 생성
- 3. 생성된 tomcat 파일에 환경설정 내용 작성
a. 형식
catalina.out이 생성될 경로 {
---- 환경설정 옵션 정보 ----
}
/data/tomcat/logs/catalina.out {
copytruncate
compress
daily
rotate 14
missingok
notifempty
dateext
}
옵션 정보 | |
copytruncate | 기존 파일을 복사한 후 기존 파일 부분 내용 삭제 이 옵션을 넣지 않으면 맨 처음 로그가 생성된 파일에 계속해서 로그가 쌓이게 됨 |
compress | 로그 파일 압축해서 생성 .gzip 확장자로 생성되는데 vim 데이터를 이요하면 압축을 해제해서 읽기, 수정이 가능 |
daily | 하루 단위로 로그파일 생성 |
rotate | 날짜를 지정하면 지정한 날짜만큼 지난 로그 파일을 모두 삭제 |
missingok | 로그 파일이 생성되지 않는 경우에 에러를 발생시키지 않음 |
notifempty | 로그로 기록할 내용이 없을 때는 신규 로그 파일을 생성하지 않음 |
dateext | 파일명에 날짜를 넣어서 생성 |
b. 제대로 적용되는지 확인하기 위해 아래 명령어 입력
$ sudo logrotate -f /etc/logrotate.d/tomcat
위 명령어를 실행하면 강제로 logrotate를 한번 실행하게 되며 catalina.out-yyyy-mm-dd 파일이 생성된다.
이제 하루에 한번씩 logrotate가 실행되면서 catalina.out 파일이 날짜별로 생성되고 오래된 로그 파일은 알아서 삭제된다.
🙏 참조 ::
반응형
'Tomcat' 카테고리의 다른 글
[Tomcat] DATASOURCE(데이터베이스) 동적 속성 적용 (0) | 2021.04.29 |
---|---|
[Tomcat] catalina.out 초기화 (0) | 2021.03.03 |
[Tomcat] 같은 도메인 다른 포트 HTTP 세션 충돌 (0) | 2021.03.03 |