From f92775719afcfcf3ef4a341be669e00c0c2a0bb5 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 19 Nov 2019 15:38:09 +0100 Subject: [PATCH] log: make timestamps configurable --- spa/include/spa/support/log.h | 2 ++ spa/plugins/support/logger.c | 7 ++++++- src/pipewire/pipewire.c | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/spa/include/spa/support/log.h b/spa/include/spa/support/log.h index 49cbca8b9..5007caa4c 100644 --- a/spa/include/spa/support/log.h +++ b/spa/include/spa/support/log.h @@ -167,6 +167,8 @@ static inline void spa_log_trace_fp (struct spa_log *l, const char *format, ...) #define SPA_KEY_LOG_COLORS "log.colors" /**< enable colors in the logger */ #define SPA_KEY_LOG_FILE "log.file" /**< log to the specified file instead of * stderr. */ +#define SPA_KEY_LOG_TIMESTAMP "log.timestamp" /**< log timestamps */ + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/spa/plugins/support/logger.c b/spa/plugins/support/logger.c index 0df5b0dea..f9197a568 100644 --- a/spa/plugins/support/logger.c +++ b/spa/plugins/support/logger.c @@ -56,6 +56,7 @@ struct impl { unsigned int have_source:1; unsigned int colors:1; + unsigned int timestamp:1; }; static void @@ -90,18 +91,20 @@ impl_log_logv(void *object, vsnprintf(text, sizeof(text), fmt, args); - if (level >= SPA_LOG_LEVEL_DEBUG) { + if (impl->timestamp) { struct timespec now; clock_gettime(CLOCK_MONOTONIC_RAW, &now); size = snprintf(location, sizeof(location), "%s[%s][%09lu.%06lu][%s:%i %s()] %s%s\n", prefix, levels[level], now.tv_sec & 0x1FFFFFFF, now.tv_nsec / 1000, strrchr(file, '/') + 1, line, func, text, suffix); + } else { size = snprintf(location, sizeof(location), "%s[%s][%s:%i %s()] %s%s\n", prefix, levels[level], strrchr(file, '/') + 1, line, func, text, suffix); } + if (SPA_UNLIKELY(do_trace)) { uint32_t index; @@ -259,6 +262,8 @@ impl_init(const struct spa_handle_factory *factory, } if (info) { + if ((str = spa_dict_lookup(info, SPA_KEY_LOG_TIMESTAMP)) != NULL) + this->timestamp = (strcmp(str, "true") == 0 || atoi(str) == 1); if ((str = spa_dict_lookup(info, SPA_KEY_LOG_COLORS)) != NULL) this->colors = (strcmp(str, "true") == 0 || atoi(str) == 1); if ((str = spa_dict_lookup(info, SPA_KEY_LOG_LEVEL)) != NULL) diff --git a/src/pipewire/pipewire.c b/src/pipewire/pipewire.c index 62b14553e..de9c18431 100644 --- a/src/pipewire/pipewire.c +++ b/src/pipewire/pipewire.c @@ -351,7 +351,7 @@ SPA_EXPORT void pw_init(int *argc, char **argv[]) { const char *str; - struct spa_dict_item items[3]; + struct spa_dict_item items[4]; uint32_t n_items; struct spa_dict info; struct support *support = &global_support; @@ -379,6 +379,7 @@ void pw_init(int *argc, char **argv[]) n_items = 0; items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_LOG_COLORS, "1"); + items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_LOG_TIMESTAMP, "1"); snprintf(level, sizeof(level), "%d", pw_log_level); items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_LOG_LEVEL, level); if ((str = getenv("PIPEWIRE_LOG")) != NULL)