not set

아파치 로그 설정 (rotatelogs) 본문

Apache/Apache HTTP Server

아파치 로그 설정 (rotatelogs)

다크곰 2009. 6. 9. 20:11

아파치 로그 설정 (rotatelogs)

접속자가 많은 사이트에서는 아파치 로그를 관리하는 것도 만만치 않다.
Linux, solaris 등에서 로그 파일 크기가 2GB가 넘어서 골치아픈 경우도 발생한다.
또한 로그 파일이 크면 클수록 서버에 필요없는 무리를 주는 것도 사실이다.


Apache 자체에서 제공하는 rotatelogs를 이용하여 로그를 시간과 용량에 따라
weblog를 분리 저장하는 방법


로그를 관리하기 위해 logrotate 를 사용하는 경우가 많지만, 이는 서비스를 일시 중단해야
한다. 그러나 apache에서 제공하는 rotatelogs는 웹서버 동작중에 (1) 특정시간간격이나
(2) 특정 크기 단위로 로그를 저장한다.

예) CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access.log 86400" common

위는 웹서버를 실행한지 86400초(24시간)간격으로 로그파일을 나눠서 저장한다.
로그 파일명은 'access.log.????' 형식으로 ???? 는 로그파일 생성시의 timestamp 이다.

즉, access.log.1060189068,  access.log.1060120280 형태로 파일명이 만들어진다.
이런형태의 파일명이라면 이해하기 힘들 것이다. 좀더 쉽게 파일명을 만들어보자.

CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m%d-%H%M%S 86400" common
또는
CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m%d 86400" common

이제는 'access_log.월일-시분초' 또는 'access_log.월일' 형태로 생성될 것이다.

CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log.%m%d-%H%M%S 100M" common

100M 단위로 로그를 저장할 수도 있다.

 

위 rotatelogs 적용 방법은 어떤 로그에서도 적용하여 분할 관리가 가능하다.