Linux Apache2 access.log 날짜별 저장(rotatelogs)

가상 호스트 설정을 하면서 각 도메인별로 방문자 로그가 “access.log”에 쌓이도록 해 놓았다. 그런데 파일 분리를 하지 않다 보니 시간이 지날수록 access.log에 로그가 쌓이고 용량이 너무 커져 버리는 문제가 생겼다. 파일을 열 때 시간이 너무 많이 걸리고, 서버에도 좋지 않겠다는 생각이 들었음.

 

찾아보니 ‘rotatelogs’를 이용해 간단히 로그를 일자별로 정리되게 할 수 있었다.

 

rotatelogs란

Piped logging program to rotate Apache logs라고 하여 아파치의 파이프 로그파일 기능을 위한 간단한 프로그램이라고 한다.

 

설정방법

가상호스트를 설정할 때 ‘CustomLog’에 로그 저장 위치를 지정하는데 이 곳만 만져주면 된다.

 

기존 : CustomLog /로그경로/access.log combined
변경 : CustomLog “|/usr/bin/rotatelogs /로그경로/access.%Y%m%d.log 86400” combined

 

위와 같이 변경해준 후 “service apache2 restart” 명령어로 아파치를 재시작해주었다.

 

명령어 설명

제일 처음 파이프 “|” 는 입력하여 아파치가 로그 처리를 직접하지 않고 rotatelogs에게 넘겨준다.

rotatelogs의 경로는 “which rotatelogs” 명령어로 위치를 찾으면 된다.

access 파일명에 “%Y%m%d”를 입력하여 날짜를 구분할 수 있도록 뒤의 86400은 86,400초로 24시간 주기를 의미한다. 원하는 주기를 입력하면 된다. 나는 일단위 저장을 할 것이므로 86400으로 설정을 했다.

제일 마지막의 combined는 로그 형식을 정의한다. ‘common’과 ‘combined’가 있다.

 

에러 로그 또한 동일한 방법으로 주기적으로 저장할 수 있다.

 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다