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

View File

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

View File

@ -83,6 +83,7 @@ main(int argc, char *argv[])
char ch;
int rc;
const char *socket_path = NULL;
enum spdk_log_level print_level = SPDK_LOG_NOTICE;
vhost_app_opts_init(&opts);
@ -110,7 +111,7 @@ main(int argc, char *argv[])
opts.master_core = strtoul(optarg, NULL, 10);
break;
case 'q':
spdk_g_notice_stderr_flag = 0;
print_level = SPDK_LOG_WARN;
break;
case 's':
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) &&
!strncmp(ttyname(STDERR_FILENO), "/dev/tty", strlen("/dev/tty"))) {
printf("Warning: printing stderr to console terminal without -q option specified.\n");
@ -149,6 +150,8 @@ main(int argc, char *argv[])
sleep(10);
}
spdk_log_set_print_level(print_level);
opts.shutdown_cb = spdk_vhost_shutdown_cb;
/* 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);
/*
* Default: 1 - noticelog messages will print to stderr and syslog.
* Can be set to 0 to print noticelog messages to syslog only.
/**
* Set the current log level threshold for printing to stderr.
* 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(...) \
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);
unsigned int spdk_g_notice_stderr_flag = 1;
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_print_level = SPDK_LOG_NOTICE;
SPDK_LOG_REGISTER_TRACE_FLAG("debug", SPDK_TRACE_DEBUG)
@ -114,6 +114,17 @@ spdk_log_get_level(void) {
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
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);
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);
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);