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

- 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
--- 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.


Joshua Zhu
Senior Software Engineer
Server Platforms Team at Taobao