common access_log, trouble

Maxim Dounin mdounin на mdounin.ru
Пт Фев 19 19:10:18 MSK 2010


Hello!

On Fri, Feb 19, 2010 at 03:30:56PM +0200, Sergej Kandyla wrote:

> 
> Добрый день.
> Хочу для всех описанных server вести один дополнительный общий access_log,
> но если access_log уже задан на уровне определенного server,
> то в общий access_log (заданный в контексте http)  ничего не попадает.
> 
> 
> nginx 0.7.65
> 
> http {
>       access_log  /var/log/nginx/access.all.log  main_custom;
> 
> ...
>   server {
>        listen     80;
>        server_name example;
>        access_log  /var/log/nginx/example.access.log  main;
> 
> 
> не хотелось бы для каждого из server дублировать один общий access.log...
> 
> баг, фича, моя глупость?

Все директивы конфига задающие массивы (access_log, 
proxy_set_header, fastcgi_param, ...) ведут себя одинаково:

1. Если на данном уровне конфига соответствующий массив не 
трогается - весь массив наследуется с предыдущего уровня.

2. Если на данном уровне массив трогается - используется новый, 
чистый массив.

Подобное поведение полностью соответствует поведению остальных 
директив.  Таким образом конструкции вида

    server {
        access_log /path/to/access_log;
        error_log  /path/to/error_log;

        location /something {
            access_log /path/to/another/access_log;
            error_log  /path/to/another/error_log;

            ...
        }

        ...
   }
 
работают совершенно одинаково и предсказуемо - переопределяют логи 
для конкретного location'а.  И можно не думать о том что 
access_log'ов вообще говоря можно определить несколько, а 
несколько error_log'ов определить нельзя.

Maxim Dounin



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