Apache 2.4 에서 로그를 남기는 다양한 방법이 있는데, mod_setenvif 모듈을 이용하면 다양한 조건에 부합한 것만 로그를 남길 수 있다.
1 2 3 4 5 |
<VirtualHost 192.168.96.30:80> CustomLog "|/opt/httpd/bin/rotatelogs /opt/httpd/logs/access.%Y-%m-%d.log 86400" combinedio </VirtualHost> |
위 예제는 access.2017-04-13.log 파일에 로깅을 하는데 combinedio 로 정의된 로그 포맷대로 기록하며 86400(1day) 하루에 한번 로그 로테이션을 하도록 설정한 것이다. 그런데, 만일 기록되어지는 로그중에 특정 형식의 URI 로 시작하는 경우에 별도의 로그 파일에 기록하고 싶다면 어떻게 해야할까?
1 |
192.168.96.11 - - [13/Apr/2017:23:43:03 +0900] "POST /wp-admin/admin-ajax.php HTTP/1.1" 200 58 "http://linux.systemv.pe.kr/wp-admin/edit.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.54 Safari/537.36" "-" |
위 처럼 /wp-admin 으로 시작하는 URI 를 별도 파일로 기록하고 싶다면 다음과 같이 하면 된다.
1 2 3 4 5 6 7 8 |
SetEnvIfNoCase Request_URI "^/wp-admin.*" object_is_admin <VirtualHost 192.168.96.30:80> CustomLog "|/opt/httpd/bin/rotatelogs /opt/httpd/logs/access.%Y-%m-%d.log 86400" combinedio CustomLog "|/opt/httpd/bin/rotatelogs /opt/httpd/logs/access_wp_admin.%Y-%m-%d.log 86400" combinedio env=object_is_admin </VirtualHost> |
위와같이 mod_setenvif 모듈이 제공하는 SetEnvIfNoCase 문을 […]