Re: Не записывается access log

Maxim Dounin mdounin at mdounin.ru
Thu Apr 25 16:07:40 UTC 2013


Hello!

On Thu, Apr 25, 2013 at 11:05:30AM -0400, X-Thief wrote:

> Пытаюсь сделать чтоб 444 http ошибки записывались в другой лог файл.
> 
> Делал так:
> 
> error_page 444 = @log444;
> location @log444 {
> access_log log444.txt;
> }
> 
> Файл создался, но ничего в него не записывается. Ошибки по прежнему пишутся
> в прежний стандартный лог-файл.
> 
> Чуть ниже у меня условия, где выдаются такие ошибки. Эти условия находятся
> как и в location { так и просто в server {
> 
> Вроде этого:
> if ($something) {
> return 444;
> }
> 
> Может кто что посоветовать?
> Спасибо.

Возврат 444 ошибки - это способ сказать nginx'у, что соединение 
надо закрыть.  До директивы error_page в этом случае дело не 
доходит.

Если хочется, чтобы nginx закрыл соединение, и при этом отдельно 
залогировал соответствующий запрос - то можно сделать это, перейдя 
в нужный location перед возвратом 444, как-то так:

    error_page 418 = @close;

    if ($something) {
        return 418;
    }

    location @close {
        access_log /path/to/444.log;
        return 444;
    }

-- 
Maxim Dounin
http://nginx.org/en/donation.html



Подробная информация о списке рассылки nginx-ru