diff mbox series

[1/2] libtracefs: Add API to set the log level

Message ID 20210428073212.756329-2-tz.stoyanov@gmail.com (mailing list archive)
State Superseded
Headers show
Series Add API to set severity to tracefs library logs | expand

Commit Message

Tzvetomir Stoyanov (VMware) April 28, 2021, 7:32 a.m. UTC
Library log level is added and new API to set the desired level.
Log levels defined in libtraceevent are used. By default, the log level
of tracefs library is TEP_LOG_CRITICAL. When a new level is set, it is
also propagated to the libtraceevent.

Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
---
 include/tracefs.h   |  4 ++++
 src/tracefs-utils.c | 18 +++++++++++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/include/tracefs.h b/include/tracefs.h
index 551c37c..da40e4f 100644
--- a/include/tracefs.h
+++ b/include/tracefs.h
@@ -177,4 +177,8 @@  int tracefs_function_filter(struct tracefs_instance *instance, const char *filte
 int tracefs_function_notrace(struct tracefs_instance *instance, const char *filter,
 			     const char *module, unsigned int flags);
 
+
+/* Control library logs */
+void tracefs_set_loglevel(enum tep_loglevel level);
+
 #endif /* _TRACE_FS_H */
diff --git a/src/tracefs-utils.c b/src/tracefs-utils.c
index e10b333..3cd5208 100644
--- a/src/tracefs-utils.c
+++ b/src/tracefs-utils.c
@@ -15,6 +15,7 @@ 
 #include <unistd.h>
 #include <errno.h>
 
+#include <traceevent/event-parse.h>
 #include <traceevent/event-utils.h>
 #include "tracefs.h"
 #include "tracefs-local.h"
@@ -25,12 +26,27 @@ 
 #define _STR(x) #x
 #define STR(x) _STR(x)
 
+static int log_level = TEP_LOG_CRITICAL;
+
+/**
+ * tracefs_set_loglevel - set log level of the library
+ * @level: desired level of the library messages
+ */
+void tracefs_set_loglevel(enum tep_loglevel level)
+{
+	log_level = level;
+	tep_set_loglevel(level);
+}
+
 void __weak tracefs_warning(const char *fmt, ...)
 {
 	va_list ap;
 
+	if (log_level < TEP_LOG_WARNING)
+		return;
+
 	va_start(ap, fmt);
-	tep_vwarning("libtracefs", fmt, ap);
+	tep_vprint("libtracefs", TEP_LOG_WARNING, fmt, ap);
 	va_end(ap);
 }