From fb707a3395a38e1b559e7fe2487175ca46841572 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 10 Aug 2020 13:49:56 +1000 Subject: [PATCH] Add a prefix to the logger Makes it easier to distinguish between ei and eis when everything in the tests is just printed to stderr anyway. Signed-off-by: Peter Hutterer --- src/libei.c | 2 +- src/libeis.c | 2 +- src/util-logger.c | 24 ++++++++++++++---------- src/util-logger.h | 3 ++- test/eierpecken.c | 2 +- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/libei.c b/src/libei.c index f2bbfa9..e691c4c 100644 --- a/src/libei.c +++ b/src/libei.c @@ -143,7 +143,7 @@ ei_new(void *user_data) list_init(&ei->event_queue); list_init(&ei->devices); - ei->logger = logger_new(ei); + ei->logger = logger_new("ei", ei); logger_set_priority(ei->logger, LOGGER_DEBUG); ei->sink = sink_new(); if (!ei->sink) diff --git a/src/libeis.c b/src/libeis.c index 132aef6..8016495 100644 --- a/src/libeis.c +++ b/src/libeis.c @@ -178,7 +178,7 @@ eis_new(void *user_data) list_init(&eis->clients); list_init(&eis->event_queue); - eis->logger = logger_new(eis); + eis->logger = logger_new("eis", eis); logger_set_priority(eis->logger, LOGGER_DEBUG); eis->sink = sink_new(); if (!eis->sink) diff --git a/src/util-logger.c b/src/util-logger.c index 20d1b6a..60a2003 100644 --- a/src/util-logger.c +++ b/src/util-logger.c @@ -25,6 +25,7 @@ #include #include +#include #include "util-logger.h" #include "util-object.h" @@ -34,25 +35,27 @@ struct logger { enum logger_priority priority; logger_log_func_t handler; void *user_data; + char *prefix; }; -_printf_(3, 0) +_printf_(4, 0) static void logger_default_log_func(struct logger *logger, + const char *prefix, enum logger_priority priority, const char *format, va_list args) { - const char *prefix; + const char *msgtype; switch(priority) { - case LOGGER_DEBUG: prefix = "debug"; break; - case LOGGER_INFO: prefix = "info"; break; - case LOGGER_WARN: prefix = "warn"; break; - case LOGGER_ERROR: prefix = "error"; break; + case LOGGER_DEBUG: msgtype = "debug"; break; + case LOGGER_INFO: msgtype = "info"; break; + case LOGGER_WARN: msgtype = "warn"; break; + case LOGGER_ERROR: msgtype = "error"; break; default: prefix=""; break; } - fprintf(stderr, "%s: ", prefix); + fprintf(stderr, "%s: %s: ", prefix, msgtype); vfprintf(stderr, format, args); } @@ -63,7 +66,7 @@ log_msg_va(struct logger *logger, va_list args) { if (logger->handler && logger->priority <= priority) - logger->handler(logger, priority, format, args); + logger->handler(logger, logger->prefix, priority, format, args); } void @@ -81,7 +84,7 @@ log_msg(struct logger *logger, static void logger_destroy(struct logger* logger) { - /* nothing to do */ + free(logger->prefix); } OBJECT_IMPLEMENT_CREATE(logger); @@ -93,9 +96,10 @@ OBJECT_IMPLEMENT_GETTER(logger, user_data, void *); OBJECT_IMPLEMENT_SETTER(logger, handler, logger_log_func_t); struct logger * -logger_new(void *user_data) +logger_new(const char *prefix, void *user_data) { struct logger *logger = logger_create(NULL); + logger->prefix = prefix ? strdup(prefix) : NULL; logger->user_data = user_data; logger->priority = LOGGER_WARN; logger->handler = logger_default_log_func; diff --git a/src/util-logger.h b/src/util-logger.h index 3b969bc..0cfa87a 100644 --- a/src/util-logger.h +++ b/src/util-logger.h @@ -39,6 +39,7 @@ enum logger_priority { }; typedef void (*logger_log_func_t)(struct logger *libinput, + const char *prefix, enum logger_priority priority, const char *format, va_list args); @@ -64,7 +65,7 @@ log_msg_va(struct logger *logger, log_msg((T_)->logger, LOGGER_ERROR, __VA_ARGS__) struct logger * -logger_new(void *user_data); +logger_new(const char *prefix, void *user_data); struct logger * logger_unref(struct logger *logger); diff --git a/test/eierpecken.c b/test/eierpecken.c index 3bd8139..c244f90 100644 --- a/test/eierpecken.c +++ b/test/eierpecken.c @@ -88,7 +88,7 @@ peck_new(void) peck->eis = eis; peck->eis_behavior = PECK_EIS_BEHAVIOR_NONE; - peck->logger = logger_new(NULL); + peck->logger = logger_new("peck", NULL); logger_set_priority(peck->logger, LOGGER_DEBUG); return peck;