DPDK patches and discussions
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: "Stephen Hemminger" <stephen@networkplumber.org>,
	"Morten Brørup" <mb@smartsharesystems.com>,
	"Bruce Richardson" <bruce.richardson@intel.com>,
	"Chengwen Feng" <fengchengwen@huawei.com>,
	"Tyler Retzlaff" <roretzla@linux.microsoft.com>,
	"Anatoly Burakov" <anatoly.burakov@intel.com>,
	"Dmitry Kozlyuk" <dmitry.kozliuk@gmail.com>
Subject: [PATCH v28 07/13] log: rework syslog handling
Date: Thu, 24 Oct 2024 12:02:53 -0700	[thread overview]
Message-ID: <20241024190818.172863-8-stephen@networkplumber.org> (raw)
In-Reply-To: <20241024190818.172863-1-stephen@networkplumber.org>

Refactor how syslog is handled, make it common to Linux and FreeBSD
The syslog facility property is better handled in lib/log
rather than in eal. This also add syslog support to FreeBSD.

Log to syslog only if option is specified.
If no --syslog is given then use console only.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
 app/test/test_eal_flags.c                     |  16 +--
 .../freebsd_gsg/freebsd_eal_parameters.rst    |  27 +++++
 .../prog_guide/env_abstraction_layer.rst      |   6 +-
 doc/guides/prog_guide/log_lib.rst             |   5 +-
 lib/eal/common/eal_common_options.c           |  57 ++--------
 lib/eal/common/eal_internal_cfg.h             |   1 -
 lib/eal/freebsd/eal.c                         |   5 +-
 lib/eal/linux/eal.c                           |  12 +--
 lib/eal/windows/eal.c                         |   6 +-
 lib/log/log.c                                 |  45 ++++----
 lib/log/log_freebsd.c                         |  12 ---
 lib/log/log_internal.h                        |  11 +-
 lib/log/log_linux.c                           |  61 -----------
 lib/log/log_private.h                         |  25 +++++
 lib/log/log_syslog.c                          | 100 ++++++++++++++++++
 lib/log/log_windows.c                         |  18 ----
 lib/log/meson.build                           |   6 +-
 lib/log/version.map                           |   2 +-
 18 files changed, 211 insertions(+), 204 deletions(-)
 delete mode 100644 lib/log/log_freebsd.c
 delete mode 100644 lib/log/log_linux.c
 create mode 100644 lib/log/log_private.h
 create mode 100644 lib/log/log_syslog.c
 delete mode 100644 lib/log/log_windows.c

diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index 71d8dba731..9fcf0d56e6 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -985,12 +985,12 @@ test_misc_flags(void)
 	/* With -v */
 	const char *argv2[] = {prgname, prefix, mp_flag, "-v"};
 	/* With valid --syslog */
-	const char *argv3[] = {prgname, prefix, mp_flag,
-			"--syslog", "syslog"};
-	/* With empty --syslog (should fail) */
+	const char *argv3[] = {prgname, prefix, mp_flag, "--syslog=user"};
+	/* With empty --syslog (now defaults) */
 	const char *argv4[] = {prgname, prefix, mp_flag, "--syslog"};
 	/* With invalid --syslog */
-	const char *argv5[] = {prgname, prefix, mp_flag, "--syslog", "error"};
+	const char *argv5[] = {prgname, prefix, mp_flag, "--syslog=invalid"};
+
 	/* With no-sh-conf, also use no-huge to ensure this test runs on BSD */
 	const char *argv6[] = {prgname, "-m", DEFAULT_MEM_SIZE,
 			no_shconf, nosh_prefix, no_huge};
@@ -1080,15 +1080,15 @@ test_misc_flags(void)
 #endif
 
 	if (launch_proc(argv3) != 0) {
-		printf("Error - process did not run ok with --syslog flag\n");
+		printf("Error - process did not run ok with --syslog=user flag\n");
 		goto fail;
 	}
-	if (launch_proc(argv4) == 0) {
-		printf("Error - process run ok with empty --syslog flag\n");
+	if (launch_proc(argv4) != 0) {
+		printf("Error - process did not run ok with --syslog flag\n");
 		goto fail;
 	}
 	if (launch_proc(argv5) == 0) {
-		printf("Error - process run ok with invalid --syslog flag\n");
+		printf("Error - process run ok with --syslog=invalid flag\n");
 		goto fail;
 	}
 	if (launch_proc(argv7) != 0) {
diff --git a/doc/guides/freebsd_gsg/freebsd_eal_parameters.rst b/doc/guides/freebsd_gsg/freebsd_eal_parameters.rst
index fba467a2ce..9270d9fa3b 100644
--- a/doc/guides/freebsd_gsg/freebsd_eal_parameters.rst
+++ b/doc/guides/freebsd_gsg/freebsd_eal_parameters.rst
@@ -18,3 +18,30 @@ FreeBSD-specific EAL parameters
 -------------------------------
 
 There are currently no FreeBSD-specific EAL command-line parameters available.
+
+Other options
+~~~~~~~~~~~~~
+
+*   ``--syslog <syslog facility>``
+
+    Set syslog facility. Valid syslog facilities are::
+
+        auth
+        cron
+        daemon
+        ftp
+        kern
+        lpr
+        mail
+        news
+        syslog
+        user
+        uucp
+        local0
+        local1
+        local2
+        local3
+        local4
+        local5
+        local6
+        local7
diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
index b9fac1839d..9bafa30a0e 100644
--- a/doc/guides/prog_guide/env_abstraction_layer.rst
+++ b/doc/guides/prog_guide/env_abstraction_layer.rst
@@ -851,9 +851,9 @@ Signal Safety
   Other functions are not signal safe because they use one or more
   library routines that are not themselves signal safe.
   For example, calling ``rte_panic()`` is not safe in a signal handler
-  because it uses ``rte_log()`` and ``rte_log()`` calls the
-  ``syslog()`` library function which is in the list of
-  signal safe functions in
+  because it uses ``rte_log()`` and ``rte_log()`` may call ``vfprintf()`` or
+  ``syslog()`` library functions which are not in the list of
+  signal safe functions
   `Signal-Safety manual page <https://man7.org/linux/man-pages/man7/signal-safety.7.html>`_.
 
   The set of functions that are expected to be async-signal-safe in DPDK
diff --git a/doc/guides/prog_guide/log_lib.rst b/doc/guides/prog_guide/log_lib.rst
index ff9d1b54a2..c87830ac00 100644
--- a/doc/guides/prog_guide/log_lib.rst
+++ b/doc/guides/prog_guide/log_lib.rst
@@ -5,9 +5,7 @@ Log Library
 ===========
 
 The DPDK Log library provides the logging functionality for other DPDK libraries and drivers.
-By default, in a Linux application, logs are sent to syslog and also to the console.
-On FreeBSD and Windows applications, logs are sent only to the console.
-However, the log function can be overridden by the user to use a different logging mechanism.
+The messages can be sent to one or more sources controlled by the EAL command line options.
 
 Log Levels
 ----------
@@ -59,6 +57,7 @@ For example::
 
 Within an application, the same result can be got using the ``rte_log_set_level_pattern()`` or ``rte_log_set_level_regex()`` APIs.
 
+
 Using Logging APIs to Generate Log Messages
 -------------------------------------------
 
diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c
index eb079a65a9..ca7b702e03 100644
--- a/lib/eal/common/eal_common_options.c
+++ b/lib/eal/common/eal_common_options.c
@@ -6,9 +6,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <pthread.h>
-#ifndef RTE_EXEC_ENV_WINDOWS
-#include <syslog.h>
-#endif
 #include <ctype.h>
 #include <limits.h>
 #include <errno.h>
@@ -93,7 +90,9 @@ eal_long_options[] = {
 	{OPT_PROC_TYPE,         1, NULL, OPT_PROC_TYPE_NUM        },
 	{OPT_SOCKET_MEM,        1, NULL, OPT_SOCKET_MEM_NUM       },
 	{OPT_SOCKET_LIMIT,      1, NULL, OPT_SOCKET_LIMIT_NUM     },
-	{OPT_SYSLOG,            1, NULL, OPT_SYSLOG_NUM           },
+#ifndef RTE_EXEC_ENV_WINDOWS
+	{OPT_SYSLOG,            2, NULL, OPT_SYSLOG_NUM           },
+#endif
 	{OPT_VDEV,              1, NULL, OPT_VDEV_NUM             },
 	{OPT_VFIO_INTR,         1, NULL, OPT_VFIO_INTR_NUM        },
 	{OPT_VFIO_VF_TOKEN,     1, NULL, OPT_VFIO_VF_TOKEN_NUM    },
@@ -349,10 +348,6 @@ eal_reset_internal_config(struct internal_config *internal_cfg)
 	}
 	internal_cfg->base_virtaddr = 0;
 
-#ifdef LOG_DAEMON
-	internal_cfg->syslog_facility = LOG_DAEMON;
-#endif
-
 	/* if set to NONE, interrupt mode is determined automatically */
 	internal_cfg->vfio_intr_mode = RTE_INTR_MODE_NONE;
 	memset(internal_cfg->vfio_vf_token, 0,
@@ -1297,47 +1292,6 @@ eal_parse_lcores(const char *lcores)
 	return ret;
 }
 
-#ifndef RTE_EXEC_ENV_WINDOWS
-static int
-eal_parse_syslog(const char *facility, struct internal_config *conf)
-{
-	int i;
-	static const struct {
-		const char *name;
-		int value;
-	} map[] = {
-		{ "auth", LOG_AUTH },
-		{ "cron", LOG_CRON },
-		{ "daemon", LOG_DAEMON },
-		{ "ftp", LOG_FTP },
-		{ "kern", LOG_KERN },
-		{ "lpr", LOG_LPR },
-		{ "mail", LOG_MAIL },
-		{ "news", LOG_NEWS },
-		{ "syslog", LOG_SYSLOG },
-		{ "user", LOG_USER },
-		{ "uucp", LOG_UUCP },
-		{ "local0", LOG_LOCAL0 },
-		{ "local1", LOG_LOCAL1 },
-		{ "local2", LOG_LOCAL2 },
-		{ "local3", LOG_LOCAL3 },
-		{ "local4", LOG_LOCAL4 },
-		{ "local5", LOG_LOCAL5 },
-		{ "local6", LOG_LOCAL6 },
-		{ "local7", LOG_LOCAL7 },
-		{ NULL, 0 }
-	};
-
-	for (i = 0; map[i].name; i++) {
-		if (!strcmp(facility, map[i].name)) {
-			conf->syslog_facility = map[i].value;
-			return 0;
-		}
-	}
-	return -1;
-}
-#endif
-
 static void
 eal_log_usage(void)
 {
@@ -1663,6 +1617,7 @@ eal_log_level_parse(int argc, char * const argv[])
 
 		switch (opt) {
 		case OPT_LOG_LEVEL_NUM:
+		case OPT_SYSLOG_NUM:
 			if (eal_parse_common_option(opt, optarg, internal_conf) < 0)
 				return -1;
 			break;
@@ -1877,7 +1832,7 @@ eal_parse_common_option(int opt, const char *optarg,
 
 #ifndef RTE_EXEC_ENV_WINDOWS
 	case OPT_SYSLOG_NUM:
-		if (eal_parse_syslog(optarg, conf) < 0) {
+		if (eal_log_syslog(optarg) < 0) {
 			EAL_LOG(ERR, "invalid parameters for --"
 					OPT_SYSLOG);
 			return -1;
@@ -2254,7 +2209,7 @@ eal_common_usage(void)
 	       "  --"OPT_VMWARE_TSC_MAP"    Use VMware TSC map instead of native RDTSC\n"
 	       "  --"OPT_PROC_TYPE"         Type of this process (primary|secondary|auto)\n"
 #ifndef RTE_EXEC_ENV_WINDOWS
-	       "  --"OPT_SYSLOG"            Set syslog facility\n"
+	       "  --"OPT_SYSLOG"[=<when>]   Enable use of syslog\n"
 #endif
 	       "  --"OPT_LOG_LEVEL"=<level> Set global log level\n"
 	       "  --"OPT_LOG_LEVEL"=<type-match>:<level>\n"
diff --git a/lib/eal/common/eal_internal_cfg.h b/lib/eal/common/eal_internal_cfg.h
index 167ec501fa..f53ab8b4aa 100644
--- a/lib/eal/common/eal_internal_cfg.h
+++ b/lib/eal/common/eal_internal_cfg.h
@@ -84,7 +84,6 @@ struct internal_config {
 	/**< true if storing all pages within single files (per-page-size,
 	 * per-node) non-legacy mode only.
 	 */
-	volatile int syslog_facility;	  /**< facility passed to openlog() */
 	/** default interrupt mode for VFIO */
 	volatile enum rte_intr_mode vfio_intr_mode;
 	/** the shared VF token for VFIO-PCI bound PF and VFs devices */
diff --git a/lib/eal/freebsd/eal.c b/lib/eal/freebsd/eal.c
index 7b974608e4..a609d40ee0 100644
--- a/lib/eal/freebsd/eal.c
+++ b/lib/eal/freebsd/eal.c
@@ -11,7 +11,6 @@
 #include <stdarg.h>
 #include <unistd.h>
 #include <pthread.h>
-#include <syslog.h>
 #include <getopt.h>
 #include <sys/file.h>
 #include <stddef.h>
@@ -392,8 +391,8 @@ eal_parse_args(int argc, char **argv)
 			goto out;
 		}
 
-		/* eal_log_level_parse() already handled this option */
-		if (opt == OPT_LOG_LEVEL_NUM)
+		/* eal_log_level_parse() already handled these */
+		if (opt == OPT_LOG_LEVEL_NUM || opt == OPT_LOG_SYSLOG_NUM)
 			continue;
 
 		ret = eal_parse_common_option(opt, optarg, internal_conf);
diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
index c53a051405..0c44d0b6e3 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -610,8 +610,8 @@ eal_parse_args(int argc, char **argv)
 			goto out;
 		}
 
-		/* eal_log_level_parse() already handled this option */
-		if (opt == OPT_LOG_LEVEL_NUM)
+		/* eal_log_level_parse() already handled these options */
+		if (opt == OPT_LOG_LEVEL_NUM || opt == OPT_SYSLOG_NUM)
 			continue;
 
 		ret = eal_parse_common_option(opt, optarg, internal_conf);
@@ -1103,13 +1103,7 @@ rte_eal_init(int argc, char **argv)
 #endif
 	}
 
-	if (eal_log_init(program_invocation_short_name,
-			 internal_conf->syslog_facility) < 0) {
-		rte_eal_init_alert("Cannot init logging.");
-		rte_errno = ENOMEM;
-		rte_atomic_store_explicit(&run_once, 0, rte_memory_order_relaxed);
-		return -1;
-	}
+	eal_log_init(program_invocation_short_name);
 
 #ifdef VFIO_PRESENT
 	if (rte_vfio_enable("vfio")) {
diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c
index 93f099a968..cd8420a82c 100644
--- a/lib/eal/windows/eal.c
+++ b/lib/eal/windows/eal.c
@@ -120,8 +120,8 @@ eal_parse_args(int argc, char **argv)
 			return -1;
 		}
 
-		/* eal_log_level_parse() already handled this option */
-		if (opt == OPT_LOG_LEVEL_NUM)
+		/* eal_log_level_parse() already handled these options */
+		if (opt == OPT_LOG_LEVEL_NUM || opt == OPT_SYSLOG_NUM)
 			continue;
 
 		ret = eal_parse_common_option(opt, optarg, internal_conf);
@@ -249,7 +249,7 @@ rte_eal_init(int argc, char **argv)
 	char cpuset[RTE_CPU_AFFINITY_STR_LEN];
 	char thread_name[RTE_THREAD_NAME_SIZE];
 
-	eal_log_init(NULL, 0);
+	eal_log_init(NULL);
 
 	eal_log_level_parse(argc, argv);
 
diff --git a/lib/log/log.c b/lib/log/log.c
index 7416c82b34..feadcd6848 100644
--- a/lib/log/log.c
+++ b/lib/log/log.c
@@ -2,6 +2,7 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <stdarg.h>
@@ -11,14 +12,18 @@
 #include <regex.h>
 #include <fnmatch.h>
 #include <sys/queue.h>
+#include <unistd.h>
 
+#include <rte_common.h>
 #include <rte_log.h>
 #include <rte_per_lcore.h>
+
 #ifdef RTE_EXEC_ENV_WINDOWS
 #include <rte_os_shim.h>
 #endif
 
 #include "log_internal.h"
+#include "log_private.h"
 
 struct rte_log_dynamic_type {
 	const char *name;
@@ -54,9 +59,6 @@ TAILQ_HEAD(rte_eal_opt_loglevel_list, rte_eal_opt_loglevel);
 static struct rte_eal_opt_loglevel_list opt_loglevel_list =
 	TAILQ_HEAD_INITIALIZER(opt_loglevel_list);
 
-/* Stream to use for logging if rte_logs.file is NULL */
-static FILE *default_log_stream;
-
 /**
  * This global structure stores some information about the message
  * that is currently being processed by one lcore
@@ -69,8 +71,6 @@ struct log_cur_msg {
  /* per core log */
 static RTE_DEFINE_PER_LCORE(struct log_cur_msg, log_cur_msg);
 
-/* default logs */
-
 /* Change the stream that will be used by logging system */
 int
 rte_openlog_stream(FILE *f)
@@ -84,17 +84,7 @@ rte_log_get_stream(void)
 {
 	FILE *f = rte_logs.file;
 
-	if (f == NULL) {
-		/*
-		 * Grab the current value of stderr here, rather than
-		 * just initializing default_log_stream to stderr. This
-		 * ensures that we will always use the current value
-		 * of stderr, even if the application closes and
-		 * reopens it.
-		 */
-		return default_log_stream != NULL ? default_log_stream : stderr;
-	}
-	return f;
+	return (f == NULL) ? stderr : f;
 }
 
 /* Set global log level */
@@ -505,12 +495,18 @@ rte_log(uint32_t level, uint32_t logtype, const char *format, ...)
 }
 
 /*
- * Called by environment-specific initialization functions.
+ * Called by rte_eal_init
  */
 void
-eal_log_set_default(FILE *default_log)
+eal_log_init(const char *id)
 {
-	default_log_stream = default_log;
+	FILE *logf = NULL;
+
+	if (log_syslog_enabled())
+		logf = log_syslog_open(id);
+
+	if (logf)
+		rte_openlog_stream(logf);
 
 #if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG
 	RTE_LOG(NOTICE, EAL,
@@ -524,8 +520,11 @@ eal_log_set_default(FILE *default_log)
 void
 rte_eal_log_cleanup(void)
 {
-	if (default_log_stream) {
-		fclose(default_log_stream);
-		default_log_stream = NULL;
-	}
+	FILE *log_stream = rte_logs.file;
+
+	/* don't close stderr on the application */
+	if (log_stream != NULL)
+		fclose(log_stream);
+
+	rte_logs.file = NULL;
 }
diff --git a/lib/log/log_freebsd.c b/lib/log/log_freebsd.c
deleted file mode 100644
index 698d3c5423..0000000000
--- a/lib/log/log_freebsd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2023 Intel Corporation
- */
-
-#include <rte_common.h>
-#include "log_internal.h"
-
-int
-eal_log_init(__rte_unused const char *id, __rte_unused int facility)
-{
-	return 0;
-}
diff --git a/lib/log/log_internal.h b/lib/log/log_internal.h
index 451629f1c1..3c46328e7b 100644
--- a/lib/log/log_internal.h
+++ b/lib/log/log_internal.h
@@ -14,13 +14,7 @@
  * Initialize the default log stream.
  */
 __rte_internal
-int eal_log_init(const char *id, int facility);
-
-/*
- * Determine where log data is written when no call to rte_openlog_stream.
- */
-__rte_internal
-void eal_log_set_default(FILE *default_log);
+void eal_log_init(const char *id);
 
 /*
  * Save a log option for later.
@@ -30,6 +24,9 @@ int eal_log_save_regexp(const char *regexp, uint32_t level);
 __rte_internal
 int eal_log_save_pattern(const char *pattern, uint32_t level);
 
+__rte_internal
+int eal_log_syslog(const char *name);
+
 /*
  * Convert log level to string.
  */
diff --git a/lib/log/log_linux.c b/lib/log/log_linux.c
deleted file mode 100644
index 2dfb0c974b..0000000000
--- a/lib/log/log_linux.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <syslog.h>
-
-#include <rte_log.h>
-
-#include "log_internal.h"
-
-/*
- * default log function
- */
-static ssize_t
-console_log_write(__rte_unused void *c, const char *buf, size_t size)
-{
-	ssize_t ret;
-
-	/* write on stderr */
-	ret = fwrite(buf, 1, size, stderr);
-	fflush(stderr);
-
-	/* Syslog error levels are from 0 to 7, so subtract 1 to convert */
-	syslog(rte_log_cur_msg_loglevel() - 1, "%.*s", (int)size, buf);
-
-	return ret;
-}
-
-static int
-console_log_close(__rte_unused void *c)
-{
-	closelog();
-	return 0;
-}
-
-static cookie_io_functions_t console_log_func = {
-	.write = console_log_write,
-	.close = console_log_close,
-};
-
-/*
- * set the log to default function, called during eal init process,
- * once memzones are available.
- */
-int
-eal_log_init(const char *id, int facility)
-{
-	FILE *log_stream;
-
-	log_stream = fopencookie(NULL, "w+", console_log_func);
-	if (log_stream == NULL)
-		return -1;
-
-	openlog(id, LOG_NDELAY | LOG_PID, facility);
-
-	eal_log_set_default(log_stream);
-
-	return 0;
-}
diff --git a/lib/log/log_private.h b/lib/log/log_private.h
new file mode 100644
index 0000000000..bf87b43f7e
--- /dev/null
+++ b/lib/log/log_private.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+
+#ifndef LOG_PRIVATE_H
+#define LOG_PRIVATE_H
+
+/* Defined in limits.h on Linux */
+#ifndef LINE_MAX
+#define LINE_MAX	2048 /* _POSIX2_LINE_MAX */
+#endif
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+static inline bool log_syslog_enabled(void)
+{
+	return false;
+}
+static inline FILE *log_syslog_open(const char *id __rte_unused)
+{
+	return NULL;
+}
+#else
+bool log_syslog_enabled(void);
+FILE *log_syslog_open(const char *id);
+#endif
+
+#endif /* LOG_PRIVATE_H */
diff --git a/lib/log/log_syslog.c b/lib/log/log_syslog.c
new file mode 100644
index 0000000000..7d29e3a00f
--- /dev/null
+++ b/lib/log/log_syslog.c
@@ -0,0 +1,100 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2010-2014 Intel Corporation
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <string.h>
+#include <syslog.h>
+
+#include <rte_common.h>
+#include <rte_log.h>
+
+#include "log_internal.h"
+#include "log_private.h"
+
+static int log_facility;
+
+static const struct {
+	const char *name;
+	int value;
+} facilitys[] = {
+	{ "auth", LOG_AUTH },
+	{ "cron", LOG_CRON },
+	{ "daemon", LOG_DAEMON },
+	{ "ftp", LOG_FTP },
+	{ "kern", LOG_KERN },
+	{ "lpr", LOG_LPR },
+	{ "mail", LOG_MAIL },
+	{ "news", LOG_NEWS },
+	{ "syslog", LOG_SYSLOG },
+	{ "user", LOG_USER },
+	{ "uucp", LOG_UUCP },
+	{ "local0", LOG_LOCAL0 },
+	{ "local1", LOG_LOCAL1 },
+	{ "local2", LOG_LOCAL2 },
+	{ "local3", LOG_LOCAL3 },
+	{ "local4", LOG_LOCAL4 },
+	{ "local5", LOG_LOCAL5 },
+	{ "local6", LOG_LOCAL6 },
+	{ "local7", LOG_LOCAL7 },
+};
+
+int
+eal_log_syslog(const char *name)
+{
+	unsigned int i;
+
+	for (i = 0; i < RTE_DIM(facilitys); i++) {
+		if (!strcmp(name, facilitys[i].name)) {
+			log_facility = facilitys[i].value;
+			return 0;
+		}
+	}
+	return -1;
+}
+
+/* syslog is enabled if facility is set */
+bool log_syslog_enabled(void)
+{
+	return log_facility != 0; /* LOG_KERN is 0 */
+}
+
+/*
+ * default log function
+ */
+static ssize_t
+log_syslog_write(__rte_unused void *c, const char *buf, size_t size)
+{
+	/* Syslog error levels are from 0 to 7, so subtract 1 to convert */
+	syslog(rte_log_cur_msg_loglevel() - 1, "%.*s", (int)size, buf);
+
+	return size;
+}
+
+static int
+log_syslog_close(__rte_unused void *c)
+{
+	closelog();
+	return 0;
+}
+
+static cookie_io_functions_t log_syslog_func = {
+	.write = log_syslog_write,
+	.close = log_syslog_close,
+};
+
+
+FILE *
+log_syslog_open(const char *id)
+{
+	int option = LOG_CONS | LOG_NDELAY | LOG_PID | LOG_PERROR;
+
+	openlog(id, option, log_facility);
+
+	/* redirect other log messages to syslog as well */
+	return fopencookie(NULL, "w", log_syslog_func);
+}
diff --git a/lib/log/log_windows.c b/lib/log/log_windows.c
deleted file mode 100644
index a6a0889550..0000000000
--- a/lib/log/log_windows.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017-2018 Intel Corporation
- */
-
-#include <rte_common.h>
-#include <rte_log.h>
-#include "log_internal.h"
-
-/* set the log to default function, called during eal init process. */
-int
-eal_log_init(__rte_unused const char *id, __rte_unused int facility)
-{
-	rte_openlog_stream(stderr);
-
-	eal_log_set_default(stderr);
-
-	return 0;
-}
diff --git a/lib/log/meson.build b/lib/log/meson.build
index 0d4319b36f..160cf34f50 100644
--- a/lib/log/meson.build
+++ b/lib/log/meson.build
@@ -4,6 +4,10 @@
 includes += global_inc
 sources = files(
         'log.c',
-        'log_' + exec_env + '.c',
 )
+
+if not is_windows
+    sources += files('log_syslog.c')
+endif
+
 headers = files('rte_log.h')
diff --git a/lib/log/version.map b/lib/log/version.map
index 19d7f9cdb6..1637fba3b9 100644
--- a/lib/log/version.map
+++ b/lib/log/version.map
@@ -29,6 +29,6 @@ INTERNAL {
 	eal_log_level2str;
 	eal_log_save_pattern;
 	eal_log_save_regexp;
-	eal_log_set_default;
+	eal_log_syslog; # WINDOWS_NO_EXPORT
 	rte_eal_log_cleanup;
 };
-- 
2.45.2


  parent reply	other threads:[~2024-10-24 19:09 UTC|newest]

Thread overview: 414+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-14 17:34 [dpdk-dev] [PATCH] eal: add option to put timestamp on console output Stephen Hemminger
2020-08-14 18:39 ` Dmitry Kozlyuk
2020-08-14 18:45   ` Stephen Hemminger
2020-08-14 19:09     ` Dmitry Kozlyuk
2020-08-14 19:20       ` Stephen Hemminger
2020-08-17 10:37         ` Bruce Richardson
2020-08-17 15:11           ` Stephen Hemminger
2020-10-19 14:11             ` Thomas Monjalon
2020-10-19 15:25               ` Stephen Hemminger
2024-03-21 17:22                 ` Thomas Monjalon
2023-03-06 18:18 ` [PATCH v2 0/2] Add option to timestamp console log Stephen Hemminger
2023-03-06 18:18   ` [PATCH v2 1/2] eal: unify logging code for FreeBsd and Linux Stephen Hemminger
2023-03-06 18:18   ` [PATCH v2 2/2] eal: add option to put timestamp on console output Stephen Hemminger
2023-03-07  9:09   ` [PATCH v2 0/2] Add option to timestamp console log Bruce Richardson
2023-03-06 19:28 ` [PATCH v3 " Stephen Hemminger
2023-03-06 19:28   ` [PATCH v3 1/2] eal: unify logging code for FreeBsd and Linux Stephen Hemminger
2023-03-06 19:28   ` [PATCH v3 2/2] eal: add option to put timestamp on console output Stephen Hemminger
2023-03-07  9:35     ` fengchengwen
2023-03-07 16:05       ` Stephen Hemminger
2023-03-07 16:06       ` Stephen Hemminger
2023-03-08  0:36         ` fengchengwen
2023-03-08  2:03           ` Stephen Hemminger
2023-03-09  0:55             ` fengchengwen
2023-03-08  2:51           ` Stephen Hemminger
2023-03-07  7:33   ` [PATCH v3 0/2] Add option to timestamp console log Morten Brørup
2023-03-07  9:12     ` Bruce Richardson
2023-03-07 16:04     ` Stephen Hemminger
2023-06-26 18:42 ` [PATCH v4 0/5] Logging related patchs Stephen Hemminger
2023-06-26 18:42   ` [PATCH v4 1/5] eal: unify logging code for FreeBsd and Linux Stephen Hemminger
2023-06-26 18:42   ` [PATCH v4 2/5] eal: turn off getopt_long error message during eal_log_level Stephen Hemminger
2023-06-26 18:42   ` [PATCH v4 3/5] eal: skip stdio on console logging Stephen Hemminger
2023-06-26 18:42   ` [PATCH v4 4/5] eal: move logging initialization earlier Stephen Hemminger
2023-06-26 18:42   ` [PATCH v4 5/5] eal: add option to put timestamp on console output Stephen Hemminger
2023-06-27  7:40   ` [PATCH v4 0/5] Logging related patchs Morten Brørup
2023-06-27 14:49     ` Stephen Hemminger
2023-06-27 15:04       ` Morten Brørup
2023-06-27 15:02     ` Bruce Richardson
2023-06-28 17:58 ` [PATCH v5 0/6] Logging related patches Stephen Hemminger
2023-06-28 17:58   ` [PATCH v5 1/6] eal: unify logging code for FreeBsd and Linux Stephen Hemminger
2023-06-28 17:58   ` [PATCH v5 2/6] eal: turn off getopt_long error message during eal_log_level Stephen Hemminger
2023-06-28 17:58   ` [PATCH v5 3/6] eal: fix handling of syslog facility Stephen Hemminger
2023-06-28 17:58   ` [PATCH v5 4/6] eal: skip stdio on console logging Stephen Hemminger
2023-06-28 17:58   ` [PATCH v5 5/6] eal: allow user to set default log stream before init Stephen Hemminger
2023-06-28 17:58   ` [PATCH v5 6/6] eal: add option to put timestamp on console output Stephen Hemminger
2023-06-29 15:58 ` [PATCH v6 0/6] Logging related patches Stephen Hemminger
2023-06-29 15:58   ` [PATCH v6 1/6] eal: unify logging code Stephen Hemminger
2023-06-29 15:58   ` [PATCH v6 2/6] eal: turn off getopt_long error message during eal_log_level Stephen Hemminger
2023-06-29 15:58   ` [PATCH v6 3/6] eal: fix help message for syslog option Stephen Hemminger
2023-06-29 15:58   ` [PATCH v6 4/6] eal: skip stdio on console logging Stephen Hemminger
2023-06-29 15:58   ` [PATCH v6 5/6] eal: allow user to set default log stream before init Stephen Hemminger
2023-06-29 15:58   ` [PATCH v6 6/6] eal: add option to put timestamp on console output Stephen Hemminger
2023-07-05 22:48 ` [PATCH v7 0/5] Logging timetamp and related patches Stephen Hemminger
2023-07-05 22:48   ` [PATCH v7 1/5] windows: make getopt functions have const properties Stephen Hemminger
2023-07-10 21:10     ` Tyler Retzlaff
2023-07-05 22:48   ` [PATCH v7 2/5] eal: fix help message for syslog option Stephen Hemminger
2023-07-05 22:48   ` [PATCH v7 3/5] eal: unify logging code Stephen Hemminger
2023-07-05 22:48   ` [PATCH v7 4/5] eal: allow user to set default log stream before init Stephen Hemminger
2023-07-05 22:48   ` [PATCH v7 5/5] eal: add option to put timestamp on console output Stephen Hemminger
2024-03-18 18:30 ` [PATCH v8 0/5] Logging timestamp and related patches Stephen Hemminger
2024-03-18 18:30   ` [PATCH v8 1/5] log: unify logging code Stephen Hemminger
2024-03-18 18:30   ` [PATCH v8 2/5] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-18 18:30   ` [PATCH v8 3/5] eal: allow user to set default log stream before init Stephen Hemminger
2024-03-18 18:30   ` [PATCH v8 4/5] eal: add option to put timestamp on console output Stephen Hemminger
2024-03-18 18:30   ` [PATCH v8 5/5] eal: initialize logging before plugins Stephen Hemminger
2024-03-18 22:02 ` [PATCH v9 0/5] Logging unification and timestamp Stephen Hemminger
2024-03-18 22:02   ` [PATCH v9 1/5] log: unify logging code Stephen Hemminger
2024-03-18 22:02   ` [PATCH v9 2/5] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-18 22:02   ` [PATCH v9 3/5] eal: initialize logging before plugins Stephen Hemminger
2024-03-18 22:03   ` [PATCH v9 4/5] eal: allow user to set default log stream before init Stephen Hemminger
2024-03-18 22:03   ` [PATCH v9 5/5] eal: add option to put timestamp on console output Stephen Hemminger
2024-03-19  7:37     ` Morten Brørup
2024-03-19 15:51       ` Stephen Hemminger
2024-03-19 16:13         ` Morten Brørup
2024-03-20  3:33           ` Stephen Hemminger
2024-03-20  8:34             ` Morten Brørup
2024-03-20 14:38               ` Stephen Hemminger
2024-03-20 17:38                 ` Morten Brørup
2024-03-21 16:00 ` [PATCH v10 00/10] Logging enhancements Stephen Hemminger
2024-03-21 16:00   ` [PATCH v10 01/10] windows: make getopt functions have const properties Stephen Hemminger
2024-03-21 16:00   ` [PATCH v10 02/10] log: unify logging code Stephen Hemminger
2024-03-21 16:00   ` [PATCH v10 03/10] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-21 17:00     ` Tyler Retzlaff
2024-03-21 16:00   ` [PATCH v10 04/10] eal: initialize log earlier in startup Stephen Hemminger
2024-03-21 16:00   ` [PATCH v10 05/10] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-21 16:00   ` [PATCH v10 06/10] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-21 17:04     ` Tyler Retzlaff
2024-03-21 16:00   ` [PATCH v10 07/10] eal: allow user to set default log stream before init Stephen Hemminger
2024-03-21 17:07     ` Tyler Retzlaff
2024-03-21 16:00   ` [PATCH v10 08/10] eal: add option to put timestamp on console output Stephen Hemminger
2024-03-21 17:11     ` Tyler Retzlaff
2024-03-21 17:16       ` Stephen Hemminger
2024-03-21 17:49         ` Tyler Retzlaff
2024-03-22  0:30           ` Stephen Hemminger
2024-03-21 16:00   ` [PATCH v10 09/10] log: colorize log output Stephen Hemminger
2024-03-21 16:00   ` [PATCH v10 10/10] doc: add documentation of logging options Stephen Hemminger
2024-03-24  2:33 ` [PATCH v11 0/9] Logging unification and enhancements Stephen Hemminger
2024-03-24  2:33   ` [PATCH v11 1/9] windows: make getopt functions have const properties Stephen Hemminger
2024-03-24  2:33   ` [PATCH v11 2/9] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-24  2:33   ` [PATCH v11 3/9] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-24  2:33   ` [PATCH v11 4/9] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-24  2:33   ` [PATCH v11 5/9] log: drop syslog support, and make code common Stephen Hemminger
2024-03-24  2:33   ` [PATCH v11 6/9] log: add hook for printing log messages Stephen Hemminger
2024-03-24  2:33   ` [PATCH v11 7/9] log: add timestamp option Stephen Hemminger
2024-03-24  2:33   ` [PATCH v11 8/9] log: add support for systemd journal Stephen Hemminger
2024-03-24  2:33   ` [PATCH v11 9/9] log: colorize log output Stephen Hemminger
2024-03-24 11:18   ` [PATCH v11 0/9] Logging unification and enhancements Mattias Rönnblom
2024-03-25 20:46 ` [PATCH v12 00/14] " Stephen Hemminger
2024-03-25 20:46   ` [PATCH v12 01/14] windows: make getopt functions have const properties Stephen Hemminger
2024-03-25 20:46   ` [PATCH v12 02/14] windows: add os shim for localtime_r Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 03/14] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 04/14] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 05/14] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-27  7:17     ` Tyler Retzlaff
2024-03-25 20:47   ` [PATCH v12 06/14] log: move handling of syslog facility out of eal Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 07/14] eal: initialize log before everything else Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 08/14] log: drop syslog support, and make code common Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 09/14] log: add hook for printing log messages Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 10/14] log: add timestamp option Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 11/14] log: add optional support of syslog Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 12/14] log: add support for systemd journal Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 13/14] log: colorize log output Stephen Hemminger
2024-03-25 20:47   ` [PATCH v12 14/14] maintainers: add for log library Stephen Hemminger
2024-03-26  1:56 ` [PATCH v13 00/11] Logging unification and improvements Stephen Hemminger
2024-03-26  1:56   ` [PATCH v13 01/11] windows: make getopt functions have const properties Stephen Hemminger
2024-03-26  9:35     ` Morten Brørup
2024-03-26  1:56   ` [PATCH v13 02/11] windows: add os shim for localtime_r Stephen Hemminger
2024-03-26  1:56   ` [PATCH v13 03/11] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-26  1:56   ` [PATCH v13 04/11] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-26  1:57   ` [PATCH v13 05/11] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-26  1:57   ` [PATCH v13 06/11] log: move handling of syslog facility out of eal Stephen Hemminger
2024-03-26  1:57   ` [PATCH v13 07/11] eal: initialize log before everything else Stephen Hemminger
2024-03-26  1:57   ` [PATCH v13 08/11] log: drop syslog support, and make code common Stephen Hemminger
2024-03-26  1:57   ` [PATCH v13 09/11] log: add hook for printing log messages Stephen Hemminger
2024-03-26  1:57   ` [PATCH v13 10/11] log: add timestamp option Stephen Hemminger
2024-03-26  1:57   ` [PATCH v13 11/11] log: add optional support of syslog Stephen Hemminger
2024-03-26 17:34 ` [PATCH v14 00/15] Logging unification and improvments Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 01/15] maintainers: add for log library Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 04/15] windows: common wrapper for vasprintf and asprintf Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 05/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 06/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 07/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 08/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 09/15] eal: initialize log before everything else Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 10/15] log: drop syslog support, and make code common Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 11/15] log: add hook for printing log messages Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 12/15] log: add timestamp option Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 13/15] log: add optional support of syslog Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 14/15] log: add support for systemd journal Stephen Hemminger
2024-03-26 17:34   ` [PATCH v14 15/15] log: colorize log output Stephen Hemminger
2024-03-27  0:26 ` [PATCH v15 00/15] Logging unification and improvements Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 01/15] maintainers: add for log library Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 04/15] windows: common wrapper for vasprintf and asprintf Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 05/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 06/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 07/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 08/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 09/15] eal: initialize log before everything else Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 10/15] log: drop syslog support, and make code common Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 11/15] log: add hook for printing log messages Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 12/15] log: add timestamp option Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 13/15] log: add optional support of syslog Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 14/15] log: add support for systemd journal Stephen Hemminger
2024-03-27  0:27   ` [PATCH v15 15/15] log: colorize log output Stephen Hemminger
2024-03-27 16:45 ` [PATCH v16 00/15] Logging unification and improvements Stephen Hemminger
2024-03-27 16:45   ` [PATCH v16 01/15] maintainers: add for log library Stephen Hemminger
2024-03-27 16:52     ` Tyler Retzlaff
2024-03-27 16:45   ` [PATCH v16 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-03-27 16:45   ` [PATCH v16 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-03-27 16:56     ` Tyler Retzlaff
2024-03-27 17:30       ` Stephen Hemminger
2024-03-27 16:45   ` [PATCH v16 04/15] windows: common wrapper for vasprintf and asprintf Stephen Hemminger
2024-03-27 17:08     ` Tyler Retzlaff
2024-03-27 16:45   ` [PATCH v16 05/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-27 17:11     ` Tyler Retzlaff
2024-03-27 16:45   ` [PATCH v16 06/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-27 17:11     ` Tyler Retzlaff
2024-03-27 16:45   ` [PATCH v16 07/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-27 17:12     ` Tyler Retzlaff
2024-03-27 16:45   ` [PATCH v16 08/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-03-27 16:45   ` [PATCH v16 09/15] eal: initialize log before everything else Stephen Hemminger
2024-03-27 17:14     ` Tyler Retzlaff
2024-03-27 16:45   ` [PATCH v16 10/15] log: drop syslog support, and make code common Stephen Hemminger
2024-03-27 16:45   ` [PATCH v16 11/15] log: add hook for printing log messages Stephen Hemminger
2024-03-27 16:45   ` [PATCH v16 12/15] log: add timestamp option Stephen Hemminger
2024-03-27 16:45   ` [PATCH v16 13/15] log: add optional support of syslog Stephen Hemminger
2024-03-27 16:45   ` [PATCH v16 14/15] log: add support for systemd journal Stephen Hemminger
2024-03-27 16:45   ` [PATCH v16 15/15] log: colorize log output Stephen Hemminger
2024-03-27 23:28 ` [PATCH v17 00/15] Logging unification and improvements Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 01/15] maintainers: add for log library Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 04/15] windows: common wrapper for vasprintf and asprintf Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 05/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 06/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 07/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 08/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 09/15] eal: initialize log before everything else Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 10/15] log: drop syslog support, and make code common Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 11/15] log: add hook for printing log messages Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 12/15] log: add timestamp option Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 13/15] log: add optional support of syslog Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 14/15] log: add support for systemd journal Stephen Hemminger
2024-03-27 23:28   ` [PATCH v17 15/15] log: colorize log output Stephen Hemminger
2024-03-28 23:49 ` [PATCH v18 00/15] Logging unification and improvements Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 01/15] maintainers: add for log library Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 04/15] windows: common wrapper for vasprintf and asprintf Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 05/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 06/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 07/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 08/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 09/15] eal: initialize log before everything else Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 10/15] log: drop syslog support, and make code common Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 11/15] log: add hook for printing log messages Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 12/15] log: add timestamp option Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 13/15] log: add optional support of syslog Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 14/15] log: add support for systemd journal Stephen Hemminger
2024-03-28 23:49   ` [PATCH v18 15/15] log: colorize log output Stephen Hemminger
2024-03-30  3:00 ` [PATCH v19 00/15] Logging unification and improvements Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 01/15] maintainers: add for log library Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 04/15] windows: common wrapper for vasprintf and asprintf Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 05/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 06/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 07/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 08/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 09/15] eal: initialize log before everything else Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 10/15] log: drop syslog support, and make code common Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 11/15] log: add hook for printing log messages Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 12/15] log: add timestamp option Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 13/15] log: add optional support of syslog Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 14/15] log: add support for systemd journal Stephen Hemminger
2024-03-30  3:00   ` [PATCH v19 15/15] log: colorize log output Stephen Hemminger
2024-03-30 16:42 ` [PATCH v20 00/14] Logging unification and improvements Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 01/14] maintainers: add for log library Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 02/14] windows: make getopt functions have const properties Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 03/14] windows: add os shim for localtime_r Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 04/14] eal: make eal_log_level_parse common Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 05/14] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 06/14] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 07/14] log: move handling of syslog facility out of eal Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 08/14] eal: initialize log before everything else Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 09/14] log: drop syslog support, and make code common Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 10/14] log: add hook for printing log messages Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 11/14] log: add timestamp option Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 12/14] log: add optional support of syslog Stephen Hemminger
2024-03-30 16:42   ` [PATCH v20 13/14] log: add support for systemd journal Stephen Hemminger
2024-04-01 11:18     ` Luca Boccassi
2024-03-30 16:42   ` [PATCH v20 14/14] log: colorize log output Stephen Hemminger
2024-06-04  0:44 ` [PATCH v21 00/14] Log library unification ane enhancements Stephen Hemminger
2024-06-04  0:44   ` [PATCH v21 01/14] maintainers: add for log library Stephen Hemminger
2024-06-06  5:35     ` Morten Brørup
2024-06-04  0:44   ` [PATCH v21 02/14] windows: make getopt functions have const properties Stephen Hemminger
2024-06-04  2:31     ` Stephen Hemminger
2024-06-04  0:44   ` [PATCH v21 03/14] windows: add os shim for localtime_r Stephen Hemminger
2024-06-04  0:44   ` [PATCH v21 04/14] eal: make eal_log_level_parse common Stephen Hemminger
2024-06-04  0:44   ` [PATCH v21 05/14] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-06-04  0:44   ` [PATCH v21 06/14] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-06-04  0:44   ` [PATCH v21 07/14] log: move handling of syslog facility out of eal Stephen Hemminger
2024-06-04  0:44   ` [PATCH v21 08/14] eal: initialize log before everything else Stephen Hemminger
2024-06-04  0:44   ` [PATCH v21 09/14] log: drop syslog support, and make code common Stephen Hemminger
2024-06-04  2:30     ` Stephen Hemminger
2024-06-04  0:44   ` [PATCH v21 10/14] log: add hook for printing log messages Stephen Hemminger
2024-06-04  0:44   ` [PATCH v21 11/14] log: add timestamp option Stephen Hemminger
2024-06-04  2:33     ` Stephen Hemminger
2024-06-04  0:45   ` [PATCH v21 12/14] log: add optional support of syslog Stephen Hemminger
2024-06-04  2:34     ` Stephen Hemminger
2024-06-04  0:45   ` [PATCH v21 13/14] log: add support for systemd journal Stephen Hemminger
2024-06-04  2:35     ` Stephen Hemminger
2024-06-04  0:45   ` [PATCH v21 14/14] log: colorize log output Stephen Hemminger
2024-06-04  2:37     ` Stephen Hemminger
2024-09-17 20:35 ` [PATCH v22 00/15] Logging improvements Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 01/15] maintainers: add for log library Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 04/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 05/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 06/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 07/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 08/15] eal: initialize log before everything else Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 09/15] log: drop syslog support, and make code common Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 10/15] log: add hook for printing log messages Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 11/15] log: add timestamp option Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 12/15] log: add optional support of syslog Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 13/15] log: add support for systemd journal Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 14/15] log: colorize log output Stephen Hemminger
2024-09-17 20:35   ` [PATCH v22 15/15] doc: add release note about log library Stephen Hemminger
2024-09-18  4:38     ` Morten Brørup
2024-09-18  4:56 ` [PATCH v23 00/15] Logging improvements Stephen Hemminger
2024-09-18  4:56   ` [PATCH v23 01/15] maintainers: add for log library Stephen Hemminger
2024-09-18  7:01     ` fengchengwen
2024-09-18  4:56   ` [PATCH v23 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-09-18  7:04     ` fengchengwen
2024-09-18  4:56   ` [PATCH v23 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-09-18  7:09     ` fengchengwen
2024-09-18 15:25       ` Stephen Hemminger
2024-09-18  4:56   ` [PATCH v23 04/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-09-18  7:18     ` fengchengwen
2024-09-18 15:24       ` Stephen Hemminger
2024-09-18  4:56   ` [PATCH v23 05/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-09-18  7:18     ` fengchengwen
2024-09-18  4:56   ` [PATCH v23 06/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-09-18  7:23     ` fengchengwen
2024-09-18  4:56   ` [PATCH v23 07/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-09-18  7:25     ` fengchengwen
2024-09-18  4:56   ` [PATCH v23 08/15] eal: initialize log before everything else Stephen Hemminger
2024-09-18  7:30     ` fengchengwen
2024-09-18  4:56   ` [PATCH v23 09/15] log: drop syslog support, and make code common Stephen Hemminger
2024-09-18  4:56   ` [PATCH v23 10/15] log: add hook for printing log messages Stephen Hemminger
2024-09-18  7:32     ` fengchengwen
2024-09-18  4:56   ` [PATCH v23 11/15] log: add timestamp option Stephen Hemminger
2024-09-18  7:37     ` fengchengwen
2024-09-18 15:05       ` Stephen Hemminger
2024-09-19  1:20         ` fengchengwen
2024-09-18  4:56   ` [PATCH v23 12/15] log: add optional support of syslog Stephen Hemminger
2024-09-18  7:41     ` fengchengwen
2024-09-18  4:56   ` [PATCH v23 13/15] log: add support for systemd journal Stephen Hemminger
2024-09-18  4:56   ` [PATCH v23 14/15] log: colorize log output Stephen Hemminger
2024-09-18  7:43     ` fengchengwen
2024-09-18  4:56   ` [PATCH v23 15/15] doc: add release note about log library Stephen Hemminger
2024-09-18  7:44     ` fengchengwen
2024-09-18  8:27   ` [PATCH v23 00/15] Logging improvements Bruce Richardson
2024-09-18 20:51 ` [PATCH v24 00/15] Logging enhancements for 24.11 Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 01/15] maintainers: add for log library Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-09-19  1:07     ` fengchengwen
2024-09-18 20:52   ` [PATCH v24 04/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 05/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 06/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-09-19  1:09     ` fengchengwen
2024-09-18 20:52   ` [PATCH v24 07/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 08/15] eal: initialize log before everything else Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 09/15] log: drop syslog support, and make code common Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 10/15] log: add hook for printing log messages Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 11/15] log: add timestamp option Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 12/15] log: add optional support of syslog Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 13/15] log: add support for systemd journal Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 14/15] log: colorize log output Stephen Hemminger
2024-09-18 20:52   ` [PATCH v24 15/15] doc: add release note about log library Stephen Hemminger
2024-09-19 15:04 ` [PATCH v25 00/15] Logging enhancements for 24.11 Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 01/15] maintainers: add for log library Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 04/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 05/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 06/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 07/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 08/15] eal: initialize log before everything else Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 09/15] log: drop syslog support, and make code common Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 10/15] log: add hook for printing log messages Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 11/15] log: add timestamp option Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 12/15] log: add optional support of syslog Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 13/15] log: add support for systemd journal Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 14/15] log: colorize log output Stephen Hemminger
2024-09-19 15:04   ` [PATCH v25 15/15] doc: add release note about log library Stephen Hemminger
2024-09-30 20:34     ` Tyler Retzlaff
2024-09-20 14:47   ` [PATCH v25 00/15] Logging enhancements for 24.11 Patrick Robb
2024-10-16 20:20 ` [PATCH v26 00/15] Log subsystem improvements Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 01/15] maintainers: add for log library Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 02/15] windows: make getopt functions have const properties Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 03/15] windows: add os shim for localtime_r Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 04/15] eal: make eal_log_level_parse common Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 05/15] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-10-17 16:47     ` David Marchand
2024-10-17 17:17       ` Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 06/15] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 07/15] log: move handling of syslog facility out of eal Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 08/15] eal: initialize log before everything else Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 09/15] log: drop syslog support, and make code common Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 10/15] log: add hook for printing log messages Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 11/15] log: add timestamp option Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 12/15] log: add optional support of syslog Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 13/15] log: add support for systemd journal Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 14/15] log: colorize log output Stephen Hemminger
2024-10-16 20:20   ` [PATCH v26 15/15] doc: add release note about log library Stephen Hemminger
2024-10-18 17:07   ` [PATCH v26 00/15] Log subsystem improvements David Marchand
2024-10-18 17:45     ` Stephen Hemminger
2024-10-20  7:16   ` Baruch Even
2024-10-24  3:18 ` [PATCH v27 00/14] Log subsystem changes Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 01/14] maintainers: add for log library Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 02/14] windows: make getopt functions have const properties Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 03/14] windows: update os shim Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 04/14] eal: make eal_log_level_parse common Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 05/14] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 06/14] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 07/14] log: move handling of syslog facility out of eal Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 08/14] eal: initialize log before everything else Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 09/14] log: add hook for printing log messages Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 10/14] log: modify syslog handling Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 11/14] log: add timestamp option Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 12/14] log: add support for systemd journal Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 13/14] log: colorize log output Stephen Hemminger
2024-10-24  3:18   ` [PATCH v27 14/14] doc: add release note about log library Stephen Hemminger
2024-10-24 19:02 ` [PATCH v28 00/13] Logging subsystem improvements Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 01/13] maintainers: add for log library Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 02/13] windows: make getopt functions have const properties Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 03/13] windows: update os shim Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 04/13] eal: make eal_log_level_parse common Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 05/13] eal: do not duplicate rte_init_alert() messages Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 06/13] eal: change rte_exit() output to match rte_log() Stephen Hemminger
2024-10-24 19:02   ` Stephen Hemminger [this message]
2024-10-24 19:02   ` [PATCH v28 08/13] eal: initialize log before everything else Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 09/13] log: add hook for printing log messages Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 10/13] log: add timestamp option Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 11/13] log: add support for systemd journal Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 12/13] log: colorize log output Stephen Hemminger
2024-10-24 19:02   ` [PATCH v28 13/13] doc: add release note about log library Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241024190818.172863-8-stephen@networkplumber.org \
    --to=stephen@networkplumber.org \
    --cc=anatoly.burakov@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=dmitry.kozliuk@gmail.com \
    --cc=fengchengwen@huawei.com \
    --cc=mb@smartsharesystems.com \
    --cc=roretzla@linux.microsoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).