[tarantool-patches] [PATCH v5 1/4] Configurable syslog destination

Vladimir Davydov vdavydov.dev at gmail.com
Wed Aug 1 15:45:48 MSK 2018


On Tue, Jul 31, 2018 at 08:15:16PM +0300, Olga Arkhangelskaia wrote:
> Added server option to syslog configuration.
> Server option is responsible for log destination. At the momemt
> there is two ways of usage:server=unix:/path/to/socket or
> server=ipv4:port. If port is not set default udp port 514 is used.
> If logging to syslog is set, however there is no sever options -
> default location is used: Linux /dev/log and Mac /var/run/syslog.
> 
> Closes #3487
> ---
>  src/say.c | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
>  src/say.h |  15 ++++++++-
>  2 files changed, 115 insertions(+), 6 deletions(-)

We don't submit tests in separate patches. Please squash the tests in
this patch.

> +static int
> +syslog_connect_remote(const char *server_address)
> +{
> +	struct addrinfo *inf, hints, *ptr;
> +	const char *remote;
> +	char buf[10];
> +	char *portnum, *copy;
> +	int fd = -1;
> +	int ret;
> +
> +	copy = strdup(server_address);
> +	if (copy == NULL) {
> +		diag_set(OutOfMemory, strlen(server_address), "malloc",
> +			 "stslog server address");
> +		return fd;
> +	}
> +	portnum = copy;
> +	remote = strsep(&portnum, ":");
> +	if (portnum == NULL) {
> +		snprintf(buf, sizeof(buf), "%d", SAY_SYSLOG_DEFAULT_PORT);
> +		portnum = buf;
> +	}
> +	memset(&hints, 0, sizeof(hints));
> +	hints.ai_family = AF_INET;
> +	hints.ai_socktype = SOCK_DGRAM;
> +	hints.ai_protocol = IPPROTO_UDP;
> +
> +	ret = getaddrinfo(remote, (const char*)portnum, NULL, &inf);
> +	if (ret < 0) {
> +		errno = EIO;
> +		diag_set(SystemError, "getaddrinfo %s",
> +			 gai_strerror(ret));

Add a colon (':') between "getaddrinfo" and "%s" please.

> +		goto out;
> +	}
> +	for (ptr = inf; ptr; ptr = ptr->ai_next) {
> +		fd = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol);
> +		if (fd < 0) {
> +			diag_set(SystemError, "socket %s",
> +				 strerror(errno));

You don't need to append strerror(errno) to the error message.
SystemError will do it for you anyway. So you can simply write

  diag_set(SystemError, "socket");

> +			continue;
> +		}
> +		if (connect(fd, inf->ai_addr, inf->ai_addrlen) != 0) {
> +			close(fd);
> +			fd = -1;
> +			diag_set(SystemError, "connect %s",
> +				 strerror(errno));

Ditto.

> @@ -141,7 +147,12 @@ struct log {
>  	/** The current log level. */
>  	int level;
>  	enum say_logger_type type;
> -	/** path to file if logging to file. */
> +	/* Type of syslog destination. */
> +	enum say_syslog_server_type syslog_server_type;
> +	/** 
> +	 * Path to file if logging to file, socket
> +	 *  or server address in case of syslog.

          ^^
Malformed comment formatting. An extra space between '*' and 'or'.
Please remove.

> +	 */
>  	char *path;
>  	bool nonblock;
>  	log_format_func_t format_func;



More information about the Tarantool-patches mailing list