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@xxxxxxxxx> --- include/tracefs.h | 4 ++++ src/tracefs-utils.c | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) 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); } -- 2.31.1