Назад | Перейти на главную страницу

Регулярное выражение для мониторинга ошибок HTTP в журналах apache

Я ищу регулярное выражение, которое можно использовать для поиска ошибок HTTP в моих стандартных файлах журнала apache.

Мне интересно сопоставить все строки, не иметь статус возврата HTTP 200 или HTTP 204.

Я могу сопоставить строки, которые делать содержать код возврата HTTP 204 или HTTP 200

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

Но хотелось бы обратного. Я также уверен, что приведенное выше выражение можно оптимизировать.

Мне нужно передать такое регулярное выражение во внешнюю программу, поэтому, используя grep -v инвертировать это не вариант.

Обычные регулярные выражения не позволяют отрицать что-либо, кроме одного символа, поэтому я думаю, вам придется предоставить весь список кодов, которые вам нужны:

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

Perl-совместимые RE позволяют вам отрицать строки текста, поэтому, если вы использовали их, вы могли бы использовать

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

В -v switch дает вам все строки, которые не совпадают, поэтому:

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