일자별로 로그파일 생성하기
로그 파일에 관한 설정도 httpd.conf에서 <VitrualHost> 구문을 이용해서 할 수 있습니다.
httpd.conf(혹은 가상 호스트 설정 파일)에서 다음 구문을 찾습니다.
httpd.conf
CustomLog "${APACHE_LOG_DIR}/access.log" combined
이것은 Apache에서 제공하는 기본 로거를 이용해서 로그 기록을 할 때 사용하는 옵션입니다. 이를 다음과 같이 바꿔 줍니다.
httpd.conf
CustomLog "|(rotatelogs의 경로) ${APACHE_LOG_DIR}/access.log.%Y_%m_%d 86400" combined
가운데 옵션의 맨 앞에 써져 있는 Pipe(|)는 해당 경로에 있는 프로그램으로 로그 정보를 넘기겠다는 의미입니다. 즉, 기본 로거를 사용하지 않고 다른 로깅 프로그램을 써서 로그 기록을 하겠다는 뜻입니다.
' ${APACHE_LOG_DIR}/access.log.%Y_%m_%d'로 시작하는 구문은 로그 파일 이름을 지정하는 곳입니다. %Y,%m 등의 치환자를 사용할 수 있습니다.
rotatelogs의 경로는 서버 및 Apache 버전에 따라 다르니, which 명령을 이용하여 경로를 찾으면 됩니다.
which rotatelogs |
뒤에 붙어 있는 'combined'는 기록할 로그 형식으로, combined라는 이름으로 형식이 미리 정의되어 있는 것입니다. 이를 수정하면 로그에 기록 형식을 지정할 수 있습니다. 자세한 내용은 구글신이나 Apache 기술문서에 자세히 설명되어 있습니다.
[Apache 기술문서] http://httpd.apache.org/docs/2.2/ko/mod/mod_log_config.html
필요없는 요청 기록하지 않기
로깅을 할 때, 예를들어 jpg나 png 등 그림파일을 요청하는 내용은 구지 기록을 하지 않아도 됩니다. 이런것들까지 기록을 하면 한 사람이 홈페이지에 와서 클릭 몇번으로 수백줄의 로그를 단번에 생성시키게 될 것입니다.
httpd.conf
SetEnvIfNoCase Request_URI "\.(jpg|png|gif|css|ico|js|swf)$" exceptlist
CustomLog "|(rotatelogs 경로) ${APACHE_LOG_DIR}/access.log.%Y-%m-%d 86400" combined env=!exceptlist
이렇게 하고 Apache를 재시작 해주면 앞으로 기록되는 로그 파일은 홀~죽해질 것입니다.^^