Apache 로그의 HTTP 오류를 모니터링하기 위한 정규식

Apache 로그의 HTTP 오류를 모니터링하기 위한 정규식

표준 Apache 로그 파일에서 HTTP 오류를 검색하는 데 사용할 수 있는 정규식을 찾고 있습니다.

나는 모든 라인을 일치시키는 것이 흥미 롭습니다.~하지 않다HTTP 200 또는 HTTP 204 반환 상태가 있습니다.

나는 그 라인을 일치시킬 수 있습니다하다HTTP 204 또는 HTTP 200 반환 코드를 포함합니다.

grep 'HTTP[^"]*" 204 \| HTTP[^"]*" 200'

그러나 나는 그 반대를 원합니다. 또한 위의 표현이 최적화될 수 있다고 확신합니다.

이러한 정규식을 외부 프로그램에 공급해야 하므로 grep -v이를 역으로 사용하는 것은 옵션이 아닙니다.

답변1

일반 정규식에는 단일 문자를 제외한 모든 것을 부정하는 방법이 포함되어 있지 않으므로 원하는 전체 코드 목록을 제공해야 할 것입니다.

HTTP[^"]*" (1|20[12356]|3|4|5)

Perl 호환 RE를 사용하면 텍스트 문자열을 부정할 수 있으므로 이를 사용하는 경우 사용할 수 있습니다.

HTTP[^"]*" (?!(200|204))

답변2

스위치 -v는 일치하지 않는 모든 줄을 제공하므로 다음과 같습니다.

egrep -v 'HTTP[^"]*" (200|204)'

관련 정보