Re: Вопрос по access_log

Ruslan Ermilov ru на nginx.com
Пт Фев 9 19:27:22 UTC 2018


On Fri, Feb 09, 2018 at 04:35:05PM +0300, Slawa Olhovchenkov wrote:
> On Fri, Feb 09, 2018 at 04:26:42PM +0300, Ruslan Ermilov wrote:
> 
> > On Fri, Feb 09, 2018 at 04:11:16PM +0300, Slawa Olhovchenkov wrote:
> > > On Fri, Feb 09, 2018 at 04:01:09PM +0300, Maxim Dounin wrote:
> > > 
> > > > Hello!
> > > > 
> > > > On Fri, Feb 09, 2018 at 12:38:32PM +0300, CoDDoC wrote:
> > > > 
> > > > [...]
> > > > 
> > > > > access_log в нижестоящем контексте отменяет все вышестоящие?
> > > > 
> > > > Как и все остальные директивы, access_log наследуется с 
> > > > предыдущих уровней тогда и только тогда, когда на данном уровне не 
> > > > указано директив access_log.
> > > 
> > > и при этом, кажется, нет возможности просто включать/выключать acceess
> > > log, не трогая его настройки?
> > 
> > Запись в лог может быть условной при помощи параметра "if=".
> > 
> > Кроме того, можно на внешнем уровне (напр., server) задать access_log'и,
> > а на вложенном уровне (напр., location) указать "access_log off;".
> > Тогда на данном вложенном уровне access_log'и будут отключены, а
> > на других вложенных уровнях (где не указаны свои access_log'и) будут
> > действовать настройки как на внешнем уровне.
> > 
> > Я, впрочем, не уверен, что понял Ваш витиеватый вопрос правильно.
> 
> ну хочется указать accesslog. с кучей параметров (ну там путь,
> буферезиция и все такое). а потом по дефолту его запретить. и
> разрешать только для отдельный location.
> 
> ну вот я не вижу возможности так поступить, не повторяя в каждом
> location директивы access_log со всеми этими параметрами.

Мне кажется, я уже ответил на Ваш вопрос ранее.

access_log <много_параметров> if="$log";

location /1 {
    set $log 1;
    <тут он будет работать>
}

location /2 {
    <а тут - нет>
}


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