linux/Tip

rotatelog

efrit 2007. 3. 16. 14:36
weblog를 자동 rotation하기

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

예) 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 단위로 로그를 저장할 수도 있다.