RadarURL

조회 수 477 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

Tomcat의 로그를 보다보니 날짜별로 로그 파일을 나누어 쌓고 있음과 동시에 catalina.out이라는 파일에도 중복하여 로그를 쌓는것을 알수 있다.

이 파일은 끝없이 커지는데 관리상 좋지 못한것은 자명한 일이다. 이 문제를 해결하기 위해 catalina.sh 파일을 수정한다.

start 부분을 찾아 다음과 같이 수정하자.

elif [ "$1" = "start" ] ; then
    shift
#  touch "$CATALINA_BASE"/logs/catalina.out
 
if [ "$1" = "-security" ] ; then
    echo
"Using Security Manager"
    shift
   
"$_RUNJAVA" $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 \
     
>> /dev/null 2>&1 &
#      >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &

     
if [ ! -z "$CATALINA_PID" ]; then
        echo $
! > $CATALINA_PID
     
fi
 
else
   
"$_RUNJAVA" $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 \
     
>> /dev/null 2>&1 &
#      >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &

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


* 추가 - 더 편한 방법
언제 부터인가 위의 설정이 >> "$CATALINA_OUT" 2>&1 &와 같이 바뀌었습니다.
/etc/profile에 다음을 추가하셔도 한방에 해결됩니다.

export CATALINA_OUT="/dev/null"


출처 -  http://theeye.pe.kr/entry/Tomcat-%EB%AC%B4%EB%B6%84%EB%B3%84%ED%95%98%EA%B2%8C-catalinaout-%ED%81%AC%EA%B8%B0-%EC%BB%A4%EC%A7%80%EB%8A%94%EA%B2%83-%EB%A7%89%EA%B8%B0 






Tomcat Catalina.out 로그로테이션


톰캣서버의 로그파일은 그대로 두면 사이즈가 엄청나게 커져 있음은 물론이고,

한 파일에 지금까지의 로그가 모두 기록되어 있기 때문에 필요한 정보 검색에도 불편함이 있다.
그래서 로그파일을 년/월/주/일 등의 간격으로 로테이션 시킬 필요가 있다.

지금 일하고 있는 회사에서도 상당히 많은 리눅스 서버에서 톰캐서버를 가동시키고 있는데
일주일에 한번 메인터넌스 작업중 톰캣을 정지시키고 수동으로 백업하는 작업을 해오고 있었다.

로그로테이션에 대해 알아보니 여러가지 방법이 있었는데 그 중에 추가 설치 없이 제일 편하게 사용할 수 있는 방법이
아파치 서버를 설치하면 기본 설치되는 "rotatelogs" 이다.

설정방법은 간단하다.

%CATALINA_HOME%bin/catalina.sh 수정 

1. touch "$CATALINA_BASE"/logs/catalina.out 를 삭제 또는 커멘트 처리

2. "$CATALINA_BASE"/logs/catalina.out2>&1 & 를 다음과 같이 수정
 | /usr/local/apache/bin/rotatelogs "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d 86400 540 &

단, 수정할 부분이 두 줄이므로 주의할 것(두 줄다 수정)
86400은 일단위로 로테이션(초단위 설정)
540은 표준시와 한국시간과의 시간차

위의 설정을 완료한 뒤, 톰캣서버를 재기동하면 catalina.out.yyyy-mm-dd 형식의 파일이 생성되어 있음을 알 수 있다.

이상으로 로테이션 설정은 완료.

이전 파일을 삭제하거나 압축해서 보관하는 쉘을 Cron에 등록해서 정기적으로 관리하면 더 좋겠다.



출처 -  http://siho.tistory.com/52 






Apache Tomcat의 로그파일인 catalina.out은 기본적으로 순환되지 않고 한개의 파일로 계속해서 로그가 쌓이게 됩니다.

이게 나중에 가면 크기가 매우 커져서 문제가 발생할 소지가 있는데요..
이 파일을 순환시키기 위한 방법을 소개합니다.


이와같은 기능을 찾아보면 일반적으로 cronolog같은 툴을 사용하거나 log4j를 이용하도록 한 다른 글들을 찾아볼수 있는데 이는 상당히 번거롭고 추가적인 툴이 필요한 방법이기 때문에 리눅스의 기본 로그 순환 도구를 이용하여 사용하는 방법을 설명한다.


/etc/logrotate.d 디렉토리 안에 아래의 파일을 생성한다.

$ cd /etc/logrotate.d
$ cat > tomcat

/var/local/tomcat/logs/catalina.out {
 copytruncate
 daily
 rotate 30
 compress
 missingok
 notifempty
 delaycompress
}


여기서 중요한 부분은 copytruncate 부분입니다.

저옵션을 쓰지 않으면 기존의 맨처음 로그가 생성된 파일에 계속해서 로그가 쌓이게 됩니다.
이러한 원인은 톰캣의 로그가 System.err 객체나 System.out을 사용하기 때문에 시스템의 raw디바이스로 출력이 되어 파이프를 타지 않기 때문입니다.

따라서 원래 로그를 다른이름으로 저장하고 새로운 catalina.out을 생성한다해도 실제 로그 스트림은 다른이름으로 지정된 원래 로그쪽으로 계속해서 쌓이게 됩니다.

이걸 방지하기 위해 현재 로그내용을 복사하여 백업본으로 저장한후 원본 로그의 내용을 비우는 방식으로 저장해야 합니다.

그래서 옵션을 copytruncate를 사용해야 합니다.


이렇게 하면 톰캣의 catalina.out로그가 매일 하나씩 쌓이게 됩니다.


출처 - http://koov.net/blog/?/tag/rotate






Catalina로그를 한 파일에 누적되는 것을 피하기 위해서 보통은 cronolog,  log4j를 활용을 많이 하는데 기존 리눅스 시스템의 소프트웨어를 활용하는 방안을 하나 소개해 드립니다.

1. /etc/logrotate.d 디렉토리 안에 아래의 파일을 생성

$ cd /etc/logrotate.d
$ cat tomcat

${CATALINA_HOME}/logs/catalina.out {
 copytruncate
 daily
 rotate 30
 compress
 missingok
 notifempty
dateext
}
$logrotate -f /etc/logrotate.d/tomcat # 로그파일 순환 테스트
  • copytruncate : 기존 파일을 백업해서 다른 파일로 이동하고 기존 파일은 지워버리는 옵션
  • daily : 로그파일을 날짜별로 변환
  • compress : 지나간 로그파일들을 gzip으로 압축
  • dateext : 순환된 로그파일의 날짜확장자
  • missingok : 로그파일이 없더라도 오류를 발생시키지 않음
  • rotate 30 : 로그 파일은 30개만큼 저장된 다음 제거되거나 메일로 보내짐
  • notifempty : 파일의 내용이 없으면 새로운 로그 파일을 생성 안함


2. 그외 일자별로 저장 방법


출처 - http://www.mimul.com/pebble/default/2009/12/27/1261911840000.html


 





원문 : http://dev-world.springnote.com/pages/6460973?print=1



/etc/logrotate.d 을 이용한 catalina.out 나누기

 

Apache Tomcat의 로그파일인 catalina.out은 기본적으로 한개의 파일에 로그가 쌓이게 됩니다.

2009-11-13_130656.png



Tomcat을 재시작 하지 않는 이상 계속적으로 쌓이는 듯합니다. 벌써 용량이 후덜덜하네요.
이 파일을 다시는 볼일이 없다면 상관이 없지만...
열어 보려고 한다면... 시간 꽤 걸리듯합니다.
catalina.out의 만행을 그냥 두고 못 본척하신다면... 나중에 눈물 흘릴 수도 있습니다. :")

저도 모니터링 중에 문제가 생겨서 확인하려고 catalina.out 파일을 열어봤더니...
시간이 좀 걸리더군요...

그래서 catalina.out을 나누는 방법을 검색해봤습니다.

로그 파일을 rotate하는 방법에는 보통 4가지가 있습니다.

1. log4j
2. cronolog
3. logrotate
4. shell script


이번 포스트에서는 logrotate에 대하여 알아보겠습니다. 가장 사용하기 쉽고 제가 원하는 동작을 하더군요. :")

구분위치 및 실행 방법설명
데몬(위치)/usr/sbin/logrotate데몬의 위치 및 데몬프로그램
데몬 설정파일/etc/logrotate.conf설정파일
설정디렉토리/etc/logrotate.dlogrotate에 적용할 각종로그파일들 보관하는 디렉토리
상황파일/var/lib/logrotate.statuslogrotate한 작업내역을 보관한 파일
cron(일단위)/etc/cron.daily/logrotatelogrotate는 주기적으로 실행이되어야하므로 cron에 의해 일단위로 실행이 됨


Apache Tomcat 로그 순환 설정 : http://koov.net/blog/?/tag/rotate
위 블로그 가시면 간단히 catalina.out 로그 파일을 자동으로 나누게 설정하는

방법이 있습니다.

$ cd /etc/logrotate.d
$ cat > tomcat

/var/local/tomcat/logs/catalina.out {
copytruncate
daily
rotate 30
missingok
notifempty
}

$ logrotate -f /etc/logrotate.d/tomcat


실행 후 화면,

2009-11-13_133538.png



위 이미지와 같이 catalina.out.1 이라는 파일이 생성되는군요. 흠... 그럼 1, 2, 3 이런식으로 쌓일텐데 관리자의 입장에서는 좀 불편할 수도.... Buuuuuuuuuuut!!!!!

dateext 라는 옵션이 있군요!!!

$ cd /etc/logrotate.d
$ cat > tomcat

/var/local/tomcat/logs/catalina.out {
copytruncate
daily
rotate 30
missingok
notifempty
dateext
}

$ logrotate -f /etc/logrotate.d/tomcat
2009-11-13_135242.png






알아두셔야 할 점은 copytruncate 옵션은 반드시 써야 한다고 합니다.

copytruncate 옵션을 쓰지 않으면 기존의 맨처음 로그가 생성된 파일에 계속해서 로그가 쌓이게 됩니다. 이러한 원인은 톰캣의 로그가 System.err 객체나 System.out을 사용하기 때문에 시스템의 raw디바이스로 출력이 되어 파이프를 타지 않기 때문입니다.
따라서 원래 로그를 다른이름으로 저장하고 새로운 catalina.out을 생성한다해도 실제 로그 스트림은 다른이름으로 지정된 원래 로그쪽으로 계속해서 쌓이게 됩니다.
이걸 방지하기 위해 현재 로그내용을 복사하여 백업본으로 저장한후 원본 로그의 내용을 비우는 방식으로 저장해야 합니다.
그래서 옵션을 copytruncate를 사용해야 합니다.

copytruncate
Truncate the original log file in place after creating a copy, instead of moving the old log file and optionally creating a new one, It can be used when some program can not be told to close its logfile and thus might continue writing (appending) to the previous log file forever. Note that there is a very small time slice between copying the file and truncating it, so some logging data might be lost. When this option is used, the create option will have no effect, as the old log file stays in place.




logrotate의 설정 옵션에 대하여 조금 더 알아보면은,

dailyLog files are rotated every day.
weeklyLog files are rotated if the current weekday is less than the weekday of the last rotation or if more than a week has passed since the last rotation. This is normally the same as rotating logs on the first day of the week, but if logrotate is not being run every night a log rotation will happen at the first valid opportunity.
monthlyLog files are rotated the first time logrotate is run in a month (this is normally on the first day of the month).
notifemptyDo not rotate the log if it is empty (this overrides the ifempty option).
nocompressOld versions of log files are not compressed.
delaycompressPostpone compression of the previous log file to the next rotation cycle. This only has effect when used in combination with compress. It can be used when some program cannot be told to close its logfile and thus might continue writing to the previous log file for some time.
compressOld versions of log files are compressed with gzip by default.
mail addressWhen a log is rotated out of existence, it is mailed to address. If no mail should be generated by a particular log, the nomail directive may be used.
missingokIf the log file is missing, go on to the next one without issuing an error message.


보다 더 많은 옵션과 설명을 보시려면, http://linuxcommand.org/man_pages/logrotate8.html를 참고하세요.

superuser 사이트입니다. 옵션에 대해서 한글로 자세히 설명되어 있습니다.
http://www.superuser.co.kr/linux/logrotate/page04.htm



출처 : http://linuxism.tistory.com/298

?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 927898
346 네트워크 기가비트 이더넷 네트워크 구축에 관해 JaeSoo 2015.03.22 420
345 네트워크 시놀로지(Synology) NAS SMB2 및 Large MTU 설정하기 file JaeSoo 2015.03.22 812
344 육아,교육 (애플s) 초등학교 교과서 포장하기 & 네임택(이름표) 붙이기- 파일다운 file JaeSoo 2015.03.23 898
343 사무 소프트웨어 포토샵 Replace Color를 이용한 색상 대체 file JaeSoo 2015.03.23 582
342 네트워크 Synology 서비스에서 사용하는 네트워크 포트는? JaeSoo 2015.03.24 936
341 하드웨어 Hitachi HGST 5TB/6TB DeskStar NAS 패키지 HDD file JaeSoo 2015.03.26 563
340 네트워크 Synology(시놀로지) DS413 설치후기 - ① 설치환경 준비 JaeSoo 2015.03.26 588
339 네트워크 Synology(시놀로지) DS413 설치후기 - ② DSM JaeSoo 2015.03.26 708
338 네트워크 Synology(시놀로지) DS413 설치후기 - ③ Audio Station JaeSoo 2015.03.26 727
337 네트워크 Synology(시놀로지) DS413 설치후기 - ④ Photo Station JaeSoo 2015.03.26 714
336 생활 고양시 덕양구청 건축과 조직안내 (연락처) JaeSoo 2015.03.26 754
335 법/정책 경기도 공동주택 관리 감사 조례안 file JaeSoo 2015.03.26 413
334 육아,교육 글씨 교정 file JaeSoo 2015.03.29 739
333 소프트웨어 검색엔진 시장과 솔루션 업체 JaeSoo 2015.04.02 339
332 유닉스/리눅스 톰캣(Tomcat) 실시간 로그보기 file JaeSoo 2015.04.13 483
» 유닉스/리눅스 Tomcat 무분별하게 catalina.out 크기 커지는것 막기 file JaeSoo 2015.04.13 477
330 모바일 안드로이드 스마트폰에 네이버, 다음 이메일 계정 등록하기 file JaeSoo 2015.04.14 901
329 모바일 안드로이드 스마트폰 처음이세요? 구글 계정 만들기! file JaeSoo 2015.04.14 1446
328 모바일 아이폰4 이메일 계정 설정하기 file JaeSoo 2015.04.14 716
327 모바일 아이폰5s 메일 계정 설정 (네이버/다음/네이트) file JaeSoo 2015.04.14 1131
Board Pagination Prev 1 ... 102 103 104 105 106 107 108 109 110 111 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너