필자가 설정해놓고 있는 아파치 로그를 몇가지 공개하려고 한다.
우선 필자는 로그파일을 하루에 한번씩 생성 시킨다.
위의 문장을 설명하자면 httpd.conf파일에서 기본적으로 CustomLog logs/access_log combined 라고 되어 있는 부분을 위와 같이 고친것이다.
참고로 위의 로그는 access로그의 설정이고, error로그설정이라면 httpd.conf파일 내에서 ErrorLog logs/error_log 부분을 위와 같이 하면된다.
예) ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/error_log.%Y-%m-%d 86400"
자 그럼 하나씩 설명하자면,
|/usr/sbin/rotatelogs : 순환 로그를 생성시키는 파일이 있는곳이다. 해당 주소는 사용자의 설정에 따라 다를것이니 find / -name rotatelogs 라고 검색해서 나오는 주소를 참조하면 될것이다.
(참고로 맨앞의 | 은 소문자L이 아니라 backspace(←) 옆에 있는 문자이다)
/var/log/httpd/access_log.%Y-%m-%d 86400 : 자신의 로그파일이 쌓이는 위치밑 파일 명이다. 매일 새로운 파일이 쌓이는데 이름이 같다면 덮어씌워질 뿐이기 때문에 그날의 날짜( access_log.%Y-%m-%d)로 파일명을 해놓은 것이다. 그리고 마지막의 86400은 하루를 순환주기로하겠다는 것이다.
combined : 로그파일 안의 내용이 어떤형식으로 표시되는지를 나타내는 것이다.
순환식으로 되는 로그파일에 대해서 더 많은것을 알고 싶다면 다음을 참조하기 바란다.
참조 : http://httpd.apache.org/docs/2.0/ko/programs/rotatelogs.html
날짜단위가 아닌 파일의 용량단위로도 로그파일을 재생성 시킬수 있다.
자 그러면 위에서 대충 설명해놓은 combined에 대해서 말해보겠다.
이것은 로그포맷을 말하는것이다. httpd.conf파일의 설정중
라고 되어 있는 설정이다. 맨 끝의 combined가 해당 LogFormat의 지시자 역활을 하는것이다.
(아무거나 자신이 원하는 이름을 써도 상관없다 보통 기본설정이 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 라고 되어 있다. 위의 것은 필자가 수정한것이다.)
해당 형식의 설정에 들어가는것은 종류가 많기 때문에 다음을 참조하길 바란다.
참조 : http://httpd.apache.org/docs/2.0/ko/mod/mod_log_config.html
자신이 원하는 기록들만 로그에 쌓이도록 만들면 되는것이다.
자 마지막으로 특정기록 배제라는것에 대해서 알아보자
예를 들어 gif,jpg관련 access_log는 딱히 확인할필요가 없다. 하지만 이것들은 기본적으로 쌓여서 로그파일의 용량을 크게 만든다. 그렇다면 해당 파일들의 로그를 보지 않게 하는 방법을 보자.
라고 해놓으면 gif,jpg, ... ,swf관련 기록은 남지 않는다.
윗줄에서 설정뒤에 해당 지시자를 do_not_log로 한뒤 아래의 CustomLog에 env=!do_not_log 라는식으로 해놓으면 해당 로그가 쌓이지 않는것이다.
좀더 자세한 설명은 아래를 참조하길 바란다.
참조1 : http://httpd.apache.org/docs/2.0/ko/logs.html#page-header (조건부로그 부분참조)
참조2 : http://httpd.apache.org/docs/2.0/ko/mod/mod_setenvif.html#setenvif (조건 만들기)