Apache 액세스 로그에서 특정 항목 생략

Apache 액세스 로그에서 특정 항목 생략

일치하는 조건 등을 수행하는 스크립트 access_log에 로그를 연결하지 않고 파일 에서 노이즈 항목을 유지하는 쉬운 방법이 있습니까 ?grep -v

Apache 통계를 모니터링 collectd하지만 결과적으로 다음 메시지가 나타납니다.

157.98.65.xxx - - [23/Apr/2014:09:46:32 -0400] "GET /server-status/?auto HTTP/1.1" 200 439 "-" "collectd/4.10.9"
157.98.65.xxx - - [23/Apr/2014:09:46:32 -0400] "GET /server-status/?auto HTTP/1.1" 200 439 "-" "collectd/4.10.9"

Apache 로그에 대해 분석을 실행할 때 이제 분석을 실행하려는 이유와 실제로 관련이 없는 항목을 얻습니다(sysadmin 모니터링으로 인한 활동은 신경 쓰지 않습니다).

답변1

로그 정의에서 및 를 결합할 수 있습니다 SetEnvIf.env=

Apache 매뉴얼에서는 여기에 인용된 "조건부 로깅"에 대해 설명합니다.

상태 로그

클라이언트 요청의 특성에 따라 액세스 로그에서 특정 항목을 제외하는 것이 편리한 경우도 있습니다. 이는 환경 변수의 도움으로 쉽게 수행할 수 있습니다. 먼저, 요청이 특정 조건을 충족함을 나타내기 위해 환경 변수를 설정해야 합니다. 이는 일반적으로 를 통해 수행됩니다 SetEnvIf. 그런 다음 env=지시문의 절을 CustomLog사용하여 환경 변수가 설정된 요청을 포함하거나 제외합니다. 몇 가지 예:

# Mark requests from the loop-back interface 
  SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
# Mark requests for the robots.txt file 
  SetEnvIf Request_URI "^/robots\.txt$" dontlog
# Log what remains 
  CustomLog logs/access_log common env=!dontlog

그것은 덮는다이 섹션의매뉴얼의 내용.

당신은 이와 같은 것을 찾을 것입니다 (테스트되지 않음)

SetEnvIf Remote_Addr "157\.98\.65\.xxx" dontlog

또는

SetEnvIf User-Agent "collectd/4\.10\.9" dontlog

관련 정보