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

Andrew Kopeyko kaa at ramtel.ru
Mon Mar 13 13:18:54 MSK 2006


Добрый день всем!

Возникла необходимость писать в лог только успешно окончившиеся запросы, 
т.е. только со статусами 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
}


Игорь!
Насколько сложно/долго будет сделать такое?


-- 
Best regards,
Andrew Kopeyko <kaa at ramtel.ru>


More information about the nginx-ru mailing list