From a50246fb6480a8e981cab838df88eed05ab6ffb1 Mon Sep 17 00:00:00 2001 From: x00267701 Date: Mon, 22 Jul 2019 10:39:53 -0400 Subject: [PATCH] log: optimize spdk_log() when logging is disabled If the log level of the output log is higher than the process's log level, the system does not output it, so we needn't generate the formatting logs. Change-Id: I36be0e6807ed575fcbf1d0ae01f064a6ca2c4539 Signed-off-by: Huiming Xie Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/462790 Reviewed-by: Darek Stojaczyk Reviewed-by: Changpeng Liu Tested-by: SPDK CI Jenkins --- lib/log/log.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/lib/log/log.c b/lib/log/log.c index 07b2a649f..093975489 100644 --- a/lib/log/log.c +++ b/lib/log/log.c @@ -116,6 +116,15 @@ spdk_log(enum spdk_log_level level, const char *file, const int line, const char char buf[MAX_TMPBUF]; va_list ap; + if (g_log) { + g_log(level, file, line, func, format); + return; + } + + if (level > g_spdk_log_print_level && level > g_spdk_log_level) { + return; + } + switch (level) { case SPDK_LOG_ERROR: severity = LOG_ERR; @@ -134,25 +143,20 @@ spdk_log(enum spdk_log_level level, const char *file, const int line, const char return; } - if (g_log) { - g_log(level, file, line, func, format); + va_start(ap, format); - } else { - va_start(ap, format); + vsnprintf(buf, sizeof(buf), format, ap); - vsnprintf(buf, sizeof(buf), format, ap); - - if (level <= g_spdk_log_print_level) { - fprintf(stderr, "%s:%4d:%s: *%s*: %s", file, line, func, spdk_level_names[level], buf); - spdk_log_unwind_stack(stderr, level); - } - - if (level <= g_spdk_log_level) { - syslog(severity, "%s:%4d:%s: *%s*: %s", file, line, func, spdk_level_names[level], buf); - } - - va_end(ap); + if (level <= g_spdk_log_print_level) { + fprintf(stderr, "%s:%4d:%s: *%s*: %s", file, line, func, spdk_level_names[level], buf); + spdk_log_unwind_stack(stderr, level); } + + if (level <= g_spdk_log_level) { + syslog(severity, "%s:%4d:%s: *%s*: %s", file, line, func, spdk_level_names[level], buf); + } + + va_end(ap); } static void