Hi,
On Wed, May 16, 2012 at 12:06 AM, Ruslan Ermilov <ru@nginx.com> wrote:
> On Tue, May 15, 2012 at 12:56:17PM +0800, Joshua Zhu wrote:
> > Hi Ruslan,
> >
> > On Wed, Dec 7, 2011 at 5:07 AM, <ru@nginx.com> wrote:
> >
> > > Author: ru
> > > Date: 2011-12-06 21:07:10 +0000 (Tue, 06 Dec 2011)
> > > New Revision: 4328
> > >
> > > Log:
> > > - Improved error message when parsing of the "buffer" parameter of the
> > > "access_log" directive fails.
> > >
> > > - Added a warning if "log_format" is used in contexts other than
> "http".
> > >
> > >
> > > Modified:
> > > trunk/src/http/modules/ngx_http_log_module.c
> > >
> > > Modified: trunk/src/http/modules/ngx_http_log_module.c
> > > ===================================================================
> > > --- trunk/src/http/modules/ngx_http_log_module.c 2011-12-06
> > > 15:49:40 UTC (rev 4327)
> > > +++ trunk/src/http/modules/ngx_http_log_module.c 2011-12-06
> > > 21:07:10 UTC (rev 4328)
> > > @@ -971,7 +971,7 @@
> > >
> > > if (buf == NGX_ERROR) {
> > > ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
> > > - "invalid parameter \"%V\"", &value[3]);
> > > + "invalid buffer value \"%V\"", &name);
> > > return NGX_CONF_ERROR;
> > > }
> > >
> > > @@ -1004,6 +1004,12 @@
> > > ngx_uint_t i;
> > > ngx_http_log_fmt_t *fmt;
> > >
> > > + if (cf->cmd_type != NGX_HTTP_MAIN_CONF) {
> > > + ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
> > > + "the \"log_format\" directive may be used "
> > > + "only on \"http\" level");
> > > + }
> > > +
> > > value = cf->args->elts;
> > >
> > > fmt = lmcf->formats.elts;
> > >
> >
> > Could you shed light on why the 'log_format' change was introduced? Since
> > it's a little bit confusing to me that the 'log_format' directive is
> > allowed in http/server/location, but on the other hand, it would be
> warned
> > if it's in a server/location block.
> >
> > I ask this question because in my situation, I have lots of separate
> > server{} specific configuration files which are included in the main
> > configuration file, and each server may have its own log_format.
> Specifying
> > 'log_format' in the server{} is quite handy because it keeps the changes
> > only in the included server specific file.
>
> 1. "log_format" was never documented to be supported on levels
> other than "http".
>
> 2. Surprisingly, "log_format" specified in one "location" makes it
> magically available anywhere below in the configuration, including
> other locations and other servers.
>
> 3. The commit you reference didn't change or prohibit anything, but
> made nginx emit a warning if you try to use "log_format" on levels
> other than "http", due to above mentioned side effects.
>
> After a commit, Maxim Dounin suggested to officially support "log_format"
> on levels other than "http" but it was never implemented.
Now I see. Thank you for your kind explanation.
Regards,
--
Joshua Zhu
Senior Software Engineer
Server Platforms Team at Taobao
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel