Syslog Unix socket patch

Vladimir Homutov vl at nginx.com
Tue Oct 27 14:14:40 UTC 2015


On Fri, Oct 23, 2015 at 08:51:56PM +0200, Nils Hermansson wrote:
> # HG changeset patch
> # User Nils Hermansson <3tnica at gmail.com>
> # Date 1445625283 -7200
> #      Fri Oct 23 20:34:43 2015 +0200
> # Node ID 868fc6b3bf69be611118c597578e749c65698b8c
> # Parent  ee16fb0db905cfb858a929374cf623cdf1a0f9d3
> Most standard syslog facilicties do not expect hostname when logging to
> Unix Sockets.
> This patch removes hostname from syslog message when logging to Unix Socket.
> Tested on rsyslog and syslog-ng
>
> diff -r ee16fb0db905 -r 868fc6b3bf69 src/core/ngx_syslog.c
> --- a/src/core/ngx_syslog.c     Tue Oct 20 21:28:38 2015 +0300
> +++ b/src/core/ngx_syslog.c     Fri Oct 23 20:34:43 2015 +0200
> @@ -219,9 +219,17 @@
>      ngx_uint_t  pri;
>
>      pri = peer->facility * 8 + peer->severity;
> -
> -    return ngx_sprintf(buf, "<%ui>%V %V %V: ", pri,
> &ngx_cached_syslog_time,
> +#if (NGX_HAVE_UNIX_DOMAIN)
> +    if  (peer->server.sockaddr->sa_family == AF_UNIX) {
> +        return ngx_sprintf(buf, "<%ui>%V %V: ", pri,
> &ngx_cached_syslog_time,
> +                       &peer->tag);
> +    } else {
> +#endif
> +        return ngx_sprintf(buf, "<%ui>%V %V %V: ", pri,
> &ngx_cached_syslog_time,
>                         &ngx_cycle->hostname, &peer->tag);
> +#if (NGX_HAVE_UNIX_DOMAIN)
> +    }
> +#endif
>  }

Hi Nils,

we agree that there is some inconvenience with local syslog and are
considering adding configuration option to select desired behaviour
at this place.

Note that there is a simple solution - to setup your syslog daemon
to expect hostname. See https://trac.nginx.org/nginx/ticket/677
and https://trac.nginx.org/nginx/ticket/783.

Your suggested patch would breaks existing setups and make message
content depend on transport, what is undesirable.



More information about the nginx-devel mailing list