Defined levels of the library logs and new API to set the desired log level. By default, only critical logs are enabled. Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@xxxxxxxxx> --- src/event-parse.h | 12 ++++++++++++ src/parse-utils.c | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/event-parse.h b/src/event-parse.h index 05b156b..77be2b9 100644 --- a/src/event-parse.h +++ b/src/event-parse.h @@ -749,4 +749,16 @@ int tep_filter_copy(struct tep_event_filter *dest, struct tep_event_filter *sour int tep_filter_compare(struct tep_event_filter *filter1, struct tep_event_filter *filter2); +/* Control library logs */ +enum tep_loglevel { + TEP_LOG_NONE = 0, + TEP_LOG_CRITICAL, + TEP_LOG_ERROR, + TEP_LOG_WARNING, + TEP_LOG_INFO, + TEP_LOG_DEBUG, + TEP_LOG_ALL +}; +void tep_set_loglevel(enum tep_loglevel level); + #endif /* _PARSE_EVENTS_H */ diff --git a/src/parse-utils.c b/src/parse-utils.c index 6a4a2cd..bc89c44 100644 --- a/src/parse-utils.c +++ b/src/parse-utils.c @@ -9,8 +9,21 @@ #include <stdarg.h> #include <errno.h> +#include "event-parse.h" + #define __weak __attribute__((weak)) +static int log_level = TEP_LOG_CRITICAL; + +/** + * tep_set_loglevel - set log level of the library + * @level: desired level of the library messages + */ +void tep_set_loglevel(enum tep_loglevel level) +{ + log_level = level; +} + int __weak tep_vwarning(const char *name, const char *fmt, va_list ap) { int ret = errno; @@ -29,6 +42,9 @@ void __weak tep_warning(const char *fmt, ...) { va_list ap; + if (log_level < TEP_LOG_WARNING) + return; + va_start(ap, fmt); tep_vwarning("libtraceevent", fmt, ap); va_end(ap); -- 2.31.1