log: Add a print to stderr threshold

Change-Id: I9c1865ff1ca2d8093227c89aa9857ff18d3e346a
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/365294
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Ben Walker 2017-06-13 11:26:21 -07:00 committed by Daniel Verkamp
parent cca697b0ec
commit 65918cb8ff
5 changed files with 42 additions and 15 deletions

View File

@ -95,6 +95,7 @@ main(int argc, char **argv)
int rc, app_rc; int rc, app_rc;
int daemon_mode = 0; int daemon_mode = 0;
struct spdk_app_opts opts = {}; struct spdk_app_opts opts = {};
enum spdk_log_level print_level = SPDK_LOG_NOTICE;
/* default value in opts structure */ /* default value in opts structure */
spdk_app_opts_init(&opts); spdk_app_opts_init(&opts);
@ -134,7 +135,7 @@ main(int argc, char **argv)
opts.tpoint_group_mask = optarg; opts.tpoint_group_mask = optarg;
break; break;
case 'q': case 'q':
spdk_g_notice_stderr_flag = 0; print_level = SPDK_LOG_WARN;
break; break;
case 'm': case 'm':
opts.reactor_mask = optarg; opts.reactor_mask = optarg;
@ -165,7 +166,7 @@ main(int argc, char **argv)
} }
} }
if (spdk_g_notice_stderr_flag == 1 && if (print_level > SPDK_LOG_WARN &&
isatty(STDERR_FILENO) && isatty(STDERR_FILENO) &&
!strncmp(ttyname(STDERR_FILENO), "/dev/tty", strlen("/dev/tty"))) { !strncmp(ttyname(STDERR_FILENO), "/dev/tty", strlen("/dev/tty"))) {
printf("Warning: printing stderr to console terminal without -q option specified.\n"); printf("Warning: printing stderr to console terminal without -q option specified.\n");
@ -175,6 +176,8 @@ main(int argc, char **argv)
sleep(10); sleep(10);
} }
spdk_log_set_print_level(print_level);
opts.shutdown_cb = spdk_iscsi_shutdown; opts.shutdown_cb = spdk_iscsi_shutdown;
opts.usr1_handler = spdk_sigusr1; opts.usr1_handler = spdk_sigusr1;

View File

@ -74,6 +74,7 @@ main(int argc, char **argv)
int ch; int ch;
int rc; int rc;
struct spdk_app_opts opts = {}; struct spdk_app_opts opts = {};
enum spdk_log_level print_level = SPDK_LOG_NOTICE;
/* default value in opts */ /* default value in opts */
spdk_app_opts_init(&opts); spdk_app_opts_init(&opts);
@ -125,7 +126,7 @@ main(int argc, char **argv)
opts.tpoint_group_mask = optarg; opts.tpoint_group_mask = optarg;
break; break;
case 'q': case 'q':
spdk_g_notice_stderr_flag = 0; print_level = SPDK_LOG_WARN;
break; break;
case 'D': case 'D':
case 'H': case 'H':
@ -135,7 +136,7 @@ main(int argc, char **argv)
} }
} }
if (spdk_g_notice_stderr_flag == 1 && if (print_level > SPDK_LOG_WARN &&
isatty(STDERR_FILENO) && isatty(STDERR_FILENO) &&
!strncmp(ttyname(STDERR_FILENO), "/dev/tty", strlen("/dev/tty"))) { !strncmp(ttyname(STDERR_FILENO), "/dev/tty", strlen("/dev/tty"))) {
printf("Warning: printing stderr to console terminal without -q option specified.\n"); printf("Warning: printing stderr to console terminal without -q option specified.\n");
@ -145,6 +146,8 @@ main(int argc, char **argv)
sleep(10); sleep(10);
} }
spdk_log_set_print_level(print_level);
rc = spdk_nvmf_tgt_start(&opts); rc = spdk_nvmf_tgt_start(&opts);
return rc; return rc;

View File

@ -83,6 +83,7 @@ main(int argc, char *argv[])
char ch; char ch;
int rc; int rc;
const char *socket_path = NULL; const char *socket_path = NULL;
enum spdk_log_level print_level = SPDK_LOG_NOTICE;
vhost_app_opts_init(&opts); vhost_app_opts_init(&opts);
@ -110,7 +111,7 @@ main(int argc, char *argv[])
opts.master_core = strtoul(optarg, NULL, 10); opts.master_core = strtoul(optarg, NULL, 10);
break; break;
case 'q': case 'q':
spdk_g_notice_stderr_flag = 0; print_level = SPDK_LOG_WARN;
break; break;
case 's': case 's':
opts.mem_size = strtoul(optarg, NULL, 10); opts.mem_size = strtoul(optarg, NULL, 10);
@ -139,7 +140,7 @@ main(int argc, char *argv[])
} }
} }
if (spdk_g_notice_stderr_flag == 1 && if (print_level > SPDK_LOG_WARN &&
isatty(STDERR_FILENO) && isatty(STDERR_FILENO) &&
!strncmp(ttyname(STDERR_FILENO), "/dev/tty", strlen("/dev/tty"))) { !strncmp(ttyname(STDERR_FILENO), "/dev/tty", strlen("/dev/tty"))) {
printf("Warning: printing stderr to console terminal without -q option specified.\n"); printf("Warning: printing stderr to console terminal without -q option specified.\n");
@ -149,6 +150,8 @@ main(int argc, char *argv[])
sleep(10); sleep(10);
} }
spdk_log_set_print_level(print_level);
opts.shutdown_cb = spdk_vhost_shutdown_cb; opts.shutdown_cb = spdk_vhost_shutdown_cb;
/* Blocks until the application is exiting */ /* Blocks until the application is exiting */

View File

@ -72,11 +72,17 @@ void spdk_log_set_level(enum spdk_log_level level);
*/ */
enum spdk_log_level spdk_log_get_level(void); enum spdk_log_level spdk_log_get_level(void);
/* /**
* Default: 1 - noticelog messages will print to stderr and syslog. * Set the current log level threshold for printing to stderr.
* Can be set to 0 to print noticelog messages to syslog only. * Messages with a level less than or equal to this level
* are also printed to stderr.
*/ */
extern unsigned int spdk_g_notice_stderr_flag; void spdk_log_set_print_level(enum spdk_log_level level);
/**
* Get the current log level print threshold.
*/
enum spdk_log_level spdk_log_get_print_level(void);
#define SPDK_NOTICELOG(...) \ #define SPDK_NOTICELOG(...) \
spdk_log(SPDK_LOG_NOTICE, __FILE__, __LINE__, __func__, __VA_ARGS__) spdk_log(SPDK_LOG_NOTICE, __FILE__, __LINE__, __func__, __VA_ARGS__)

View File

@ -37,9 +37,9 @@
static TAILQ_HEAD(, spdk_trace_flag) g_trace_flags = TAILQ_HEAD_INITIALIZER(g_trace_flags); static TAILQ_HEAD(, spdk_trace_flag) g_trace_flags = TAILQ_HEAD_INITIALIZER(g_trace_flags);
unsigned int spdk_g_notice_stderr_flag = 1;
int spdk_g_log_facility = LOG_DAEMON; int spdk_g_log_facility = LOG_DAEMON;
static enum spdk_log_level g_spdk_log_level = SPDK_LOG_NOTICE; static enum spdk_log_level g_spdk_log_level = SPDK_LOG_NOTICE;
static enum spdk_log_level g_spdk_log_print_level = SPDK_LOG_NOTICE;
SPDK_LOG_REGISTER_TRACE_FLAG("debug", SPDK_TRACE_DEBUG) SPDK_LOG_REGISTER_TRACE_FLAG("debug", SPDK_TRACE_DEBUG)
@ -114,6 +114,17 @@ spdk_log_get_level(void) {
return g_spdk_log_level; return g_spdk_log_level;
} }
void
spdk_log_set_print_level(enum spdk_log_level level)
{
g_spdk_log_print_level = level;
}
enum spdk_log_level
spdk_log_get_print_level(void) {
return g_spdk_log_print_level;
}
int int
spdk_set_log_facility(const char *facility) spdk_set_log_facility(const char *facility)
{ {
@ -175,11 +186,12 @@ spdk_log(enum spdk_log_level level, const char *file, const int line, const char
vsnprintf(buf, sizeof(buf), format, ap); vsnprintf(buf, sizeof(buf), format, ap);
if (level <= g_spdk_log_level) { if (level <= g_spdk_log_print_level) {
fprintf(stderr, "%s:%4d:%s: *%s*: %s", file, line, func, spdk_level_names[level], buf); fprintf(stderr, "%s:%4d:%s: *%s*: %s", file, line, func, spdk_level_names[level], buf);
if (level <= SPDK_LOG_NOTICE) { }
syslog(severity, "%s:%4d:%s: *%s*: %s", file, line, func, spdk_level_names[level], buf);
} if (level <= g_spdk_log_level) {
syslog(severity, "%s:%4d:%s: *%s*: %s", file, line, func, spdk_level_names[level], buf);
} }
va_end(ap); va_end(ap);