Commit 46523f33 authored by paul luse's avatar paul luse Committed by Darek Stojaczyk
Browse files

log: passing user-defined log



Change-Id: I993e15a6e75029b0717960d5da31325e7f3522c1
Signed-off-by: default avatarzkhatami88 <z.khatami88@gmail.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/456407


Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent f87568a0
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -132,6 +132,19 @@ struct spdk_app_opts {

	/** Opaque context for use of the env implementation. */
	void			*env_context;

	/**
	 * for passing user-provided log call
	 *
	 * \param level Log level threshold.
	 * \param file Name of the current source file.
	 * \param line Current source file line.
	 * \param func Current source function name.
	 * \param format Format string to the message.
	 */
	void (* log)(int level, const char *file, const int line,
		     const char *func, const char *format);

};

/**
+4 −1
Original line number Diff line number Diff line
@@ -45,11 +45,14 @@
extern "C" {
#endif

typedef void logfunc(int level, const char *file, const int line,
		     const char *func, const char *format);

/**
 * Initialize the logging module. Messages prior
 * to this call will be dropped.
 */
void spdk_log_open(void);
void spdk_log_open(logfunc *logf);

/**
 * Close the currently active log. Messages after this call
+1 −1
Original line number Diff line number Diff line
@@ -624,7 +624,7 @@ spdk_app_start(struct spdk_app_opts *opts, spdk_msg_fn start_fn,
		goto app_start_setup_conf_err;
	}

	spdk_log_open();
	spdk_log_open(opts->log);
	SPDK_NOTICELOG("Total cores available: %d\n", spdk_env_get_core_count());

	/*
+26 −13
Original line number Diff line number Diff line
@@ -50,17 +50,25 @@ static const char *const spdk_level_names[] = {

#define MAX_TMPBUF 1024

static logfunc *g_log = NULL;

void
spdk_log_open(void)
spdk_log_open(logfunc *logf)
{
	if (logf) {
		g_log = logf;
	} else {
		openlog("spdk", LOG_PID, LOG_LOCAL7);
	}
}

void
spdk_log_close(void)
{
	if (!g_log) {
		closelog();
	}
}

#ifdef SPDK_LOG_BACKTRACE_LVL
static void
@@ -126,6 +134,10 @@ 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);

	} else {
		va_start(ap, format);

		vsnprintf(buf, sizeof(buf), format, ap);
@@ -141,6 +153,7 @@ spdk_log(enum spdk_log_level level, const char *file, const int line, const char

		va_end(ap);
	}
}

static void
fdump(FILE *fp, const char *label, const uint8_t *buf, size_t len)
+1 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ log_test(void)
	CU_ASSERT(spdk_log_get_flag("log") == false);
#endif

	spdk_log_open();
	spdk_log_open(NULL);
	spdk_log_set_flag("log");
	SPDK_WARNLOG("log warning unit test\n");
	SPDK_DEBUGLOG(SPDK_LOG_LOG, "log test\n");