Collapsing Empty Variables in Nginx Access Log When Using TAB Delimiter
Maxim Dounin
mdounin at mdounin.ru
Tue Mar 6 21:17:46 UTC 2012
Hello!
On Tue, Mar 06, 2012 at 02:00:45PM -0500, adamchal wrote:
> I'm noticing that Nginx's log module is "collapsing" empty log variables
> primarily when using a TAB (\t) as a delimiter in the access log.
>
> For example, if I use the following:
>
> log_format main
> '$server_name $msec $remote_addr $cookie_x $cookie_y $cookie_z $status';
>
> And a request does not have any cookies set (so $cookie_x, $cookie_y,
> and $cookie_z would be empty), then I would get a log line like this:
>
> myserver.com 1331049809.478 10.10.15.50 - 200
>
> I was expecting:
>
> myserver.com 1331049809.478 10.10.15.50 - - - 200
>
> The same thing happens with the $http_referer (when not set by the UA)
> and $upstream_addr (when serving static files).
>
> Here's a link to my access log configuration:
> https://gist.github.com/1988173
>
> I'm using Nginx v1.1.16.
>
> Has anyone experienced this before?
Number of tabs should match your log_format exactly, though some
variables may be logged as empty string (""), not as a dash
("-"), if they are set but empty. This may happen e.g. if
requests have empty cookies, i.e. "Cookie: x=; y=; z=" in request
headers.
This shouldn't happen with $upstream_addr though, and if you are
sure you see this happening with $upstream_addr and/or there
missing tabs - you may want to debug this further.
Maxim Dounin
More information about the nginx
mailing list