diff mbox series

[v2,1/3] libtracefs: Add API to set the log level

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

Commit Message

Tzvetomir Stoyanov (VMware) May 7, 2021, 9:51 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 73ee42b..08dda13 100644
--- a/include/tracefs.h
+++ b/include/tracefs.h
@@ -180,4 +180,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..9e37e75 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, true, fmt, ap);
 	va_end(ap);
 }