아파치 웹서버 조건에 따라 다른 로그 파일 사용하기 - mod_setenvif

apache httpd web server 는 보통 하나의 log file만 사용 하기 마련이다.

 

그러다 보니 하나의 로그 파일에 이미지 파일, css, .js 와 업무 로직(.php, jsp 등)이 혼재되므로 용량도 커지고 필요한 내용을 찾기가 번거롭다.

 

아파치 모듈중 mod_setenvif 를 사용하면 조건에 따른 환경 변수를 설정할 수 있으며 이를 이용하여 조건에 따라 로그 파일을 분리할 수 있다.

 

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot "/var/www/html/"
 
    ## 이미지 파일일 경우 imagelog 라는 환경 변수 설정
    SetEnvIf Request_URI \.(gif|jpe?g|png)$ imagelog
    ErrorLog logs/lesstif-error_log
 
    # imagelog 환경 변수가 설정되지 않았을 경우 일반 접근 로그 파일에 기록
    CustomLog logs/lesstif-acces_log common env=!imagelog
 
    # imagelog 환경 변수가 설정됐을 경우 별도의 접근 로그 파일에 기록
    CustomLog logs/lesstif-acces_log-image common env=imagelog
</VirtualHost>

위와 같이 설정하고 아파치 웹서버를 재구동하면 확장자가 이미지인 파일들의 접근 이력은 lesstif-acces_log-image  에 저장이 된다.