리눅스환경에서 로그파일을 날짜별 혹은 용량별로 쌓게 하는 다양한 방법들이 존재한다. 각각은 장단점을 갖고 있는데, 용도에 따라 어떤 방법을 선택할지 결정하는 것이 마땅하다. 선택포인트가 될  장단점을 비교해보았다...


1. logrotate(한글)

리눅스의 기본어플리케이션이며, 로그를 쌓을때 로테이션을 주도록하는 것이 아니라, 이미 쌓인 로그파일을 조작하는 방식이다. 보통 cron에 의해 주기적으로 호출되어 로테이션 로그파일을 만든다.

장점 : 로테이션, 압축, 파일갯수 제한등 각종 로그관련 작업들이 한방에 가능하다.

단점 : 파이프방식을 통해 쌓여지는 로그파일의 경우, 기존파일 삭제가 불가능하기 때문에(삭제하면 로그파일이 쌓이지 않기 때문에) 프로세스를 내렸다 올리는 스크립트를 설정하거나 copytruncate방식을 이용해야만 한다. 프로세스를 올렸다 내리는것은 서비스 운영에 지장을 줄 수 있고, copytruncate방식은 copy가 시작되는 시점과 truncate가 완료되는 시점 사이의 로그가 분실되게 된다. 또한 일정버전 이하(dateext를 쓸수없는)에서는 파일명을 날짜형태로 줄 수 없다.

2. cronolog

어플리케이션 구동시 로그 파일의 파이프를 cronolog프로세스로 지정하는 방식으로 사용한다.

장점 : 손실없는 완벽한 로그 로테이션이 가능하다

단점 : 별도의 프로세스 띄우고 이를 통해 로그를 쌓기 때문에 약간의 부하가 있다. 메인프로세스를 죽일때 함께 프로세스가 죽지 않는 경우가 있어 체크를 해줘야 한다. 파일용량에 따른 로테이션이 불가능하다. 압축과 삭제등은 별도로 해줘야 한다.

3. rotatelogs(한글)

Apache HTTP Server의 서브 어플리케이션이다. cronolog와 비슷하며, 용량별 파일로테이션을 지원한다.

장점 : cronolog와 같으며, 용량별 로테이션이 가능하다

단점 : cronolog와 같으며, Apache HTTP Server를 설치해야만 한다.


로그파일을 가지고 통계를 산출한다던가 할 때에는 정확성을 요하는 2/3번 방법을, 단지 버그추적을 위해서거나 만약을 대비하는 로그라면 설정과 유지보수가 간편한 1번 방법을 추천하겠다. 

Posted by A.J.Kuhn

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

ASFDBCP를 사용하나, 커넥션이 자주 사용되지 않는 Java Application의 경우에 Database에 의해서 커넥션이 단절되는 현상이 나타날 수 있다.
MySQL의 경우에는 8시간동안 사용되지 않은 커넥션(DBCP가 물고있던..)은 MySQL이 강제로 끊어버리게 되는데, 이렇게 되면 Java Application이 기대대로 동작하지않게 된다. 보통은 아래와 같은 메시지가 나타나게 된다.

'com.mysql.jdbc.CommunicationsException: Communications link failure
Last packet sent to the server was 18 ms ago.'

이러한 경우 MySQL의 JDBC설정 시

url="jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true"

와 같이 'autoReconnect'옵션을 주게 되면, 커넥션에 문제가 있을 경우 다시 접속하게 된다.
그러나, 이 경우에도 끊어진 후 처음 한번의 시도는 실패가 나게 된다(이때 문제가 있다는것을 알게 되는 것이므로..).
 
이때는 추가적인 DBCP옵션인 'validationQuery'값의 설정으로 해결 가능하다.

validationQuery="select 1" => MySQL의 경우
validationQuery="select 1 from dual" => Oracle의 경우

validationQuery는 가장 간단한 결과값을 갖는 쿼리를 넣어야 한다. 왜냐하면 모든 사용자쿼리의 실행전에 이 쿼리가 실행되어 validation을 체크하기 때문이다.
valicationQuery가 추가적인 부하이기 때문에 실제로 커넥션 사용이 거의 없는 Application에서만 사용할 것을 권장한다.

validationQuery에 대한 추가적인 설정은 여기를 참조한다.

Posted by A.J.Kuhn

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 비가와
    2008.07.28 11:20
    댓글 주소 수정/삭제 댓글
    요런 의미가 있었군;;;;ㅋㅋㅋ


BLOG main image
A.J.Kuhn, Endless supply of passion!
Generalist A.J.Kuhn의 general한 이야기 by A.J.Kuhn

카테고리

분류 전체보기 (180)
Human (4)
Employee (7)
Developer (14)
Musician (11)
Snowboarder (24)
Traveler (0)
Reviewer (119)
Diver (0)
Driver (1)

글 보관함

달력

«   2019/10   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
Total : 213,108
Today : 0 Yesterday : 6