условное логгирование

Igor Sysoev is at rambler-co.ru
Mon Mar 13 18:51:12 MSK 2006


On Mon, 13 Mar 2006, Andrew Kopeyko wrote:

> Возникла необходимость писать в лог только успешно окончившиеся запросы, т.е. 
> только со статусами 200 и 206.
>
> В Апаче это реализуется так:
>
> LogFormat "%200,206h %200,206t \"%200,206r\" %200,206>s %200,206b" common
>
> При этом, правда, в лог Апача будут писаться строки
> '- - "-" - -'
> для запросов с отличными от 200 и 206 статусами...
>
>
> Насколько я понимаю, реализовать такое условное логгирование доступными 
> средствами nginx'а сейчас не получится...
>
> Можно, конечно, пост-фактум обрабатывать лог и вырезать всё лишнее - но
> фильтрация на ходу сильно уменьшит размер файла лога, что для меня очень
> важно.
>
>
> Я вижу 2 варианта реализации:
>
> 1. расширить синтаксис директивы access_log
>
> access_log путь [формат [buffer=размер] [status[!]=статус1,статус2]]|off
>
> 2. добавить переменную $request_status и использовать её в конструкции if
>
> if ($request_status ~* (200|206) {
>   access_log /path/to/log logformat
> }
>
>
> Игорь!
> Насколько сложно/долго будет сделать такое?

Долго. Первый вариант мне не нравится. А второй не будет работать, так как
if работает в rewrite фазе ещё до того, как будет известен $request_status.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list