Re: Вопрос по access_log
Ruslan Ermilov
ru на nginx.com
Пт Фев 9 20:54:22 UTC 2018
On Fri, Feb 09, 2018 at 11:38:36PM +0300, Slawa Olhovchenkov wrote:
> On Fri, Feb 09, 2018 at 10:27:22PM +0300, Ruslan Ermilov wrote:
>
> > 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 {
> > <а тут - нет>
> > }
>
> а что при этом с производительностью?
Зависит от сложности вычисления условия. В случае с "set", это будет
практически неизмеримо. Цитата из кода:
if (log[l].filter) {
if (ngx_http_complex_value(r, log[l].filter, &val) != NGX_OK) {
return NGX_ERROR;
}
if (val.len == 0 || (val.len == 1 && val.data[0] == '0')) {
continue;
}
}
Подробная информация о списке рассылки nginx-ru