From 6fe2a70b9160e35fdeed9d37bd31727c2d46a8b2 Mon Sep 17 00:00:00 2001 From: d032747 Date: Tue, 15 Dec 2020 10:40:06 +0100 Subject: [PATCH] busctl: add a timestamp to the output of the busctl monitor command --- src/busctl/busctl.c | 6 ++++++ src/libsystemd/sd-bus/bus-dump.c | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index 06a15ddd80..274fb42ed3 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -1194,6 +1194,7 @@ static int message_json(sd_bus_message *m, FILE *f) { _cleanup_(json_variant_unrefp) JsonVariant *v = NULL, *w = NULL; char e[2]; int r; + usec_t ts; r = json_transform_message(m, &v); if (r < 0) @@ -1202,6 +1203,10 @@ static int message_json(sd_bus_message *m, FILE *f) { e[0] = m->header->endian; e[1] = 0; + ts = m->realtime; + if (ts == 0) + ts = now(CLOCK_REALTIME); + r = json_build(&w, JSON_BUILD_OBJECT( JSON_BUILD_PAIR("type", JSON_BUILD_STRING(bus_message_type_to_string(m->header->type))), JSON_BUILD_PAIR("endian", JSON_BUILD_STRING(e)), @@ -1209,6 +1214,7 @@ static int message_json(sd_bus_message *m, FILE *f) { JSON_BUILD_PAIR("version", JSON_BUILD_INTEGER(m->header->version)), JSON_BUILD_PAIR("cookie", JSON_BUILD_INTEGER(BUS_MESSAGE_COOKIE(m))), JSON_BUILD_PAIR_CONDITION(m->reply_cookie != 0, "reply_cookie", JSON_BUILD_INTEGER(m->reply_cookie)), + JSON_BUILD_PAIR("timestamp-realtime", JSON_BUILD_UNSIGNED(ts)), JSON_BUILD_PAIR_CONDITION(m->sender, "sender", JSON_BUILD_STRING(m->sender)), JSON_BUILD_PAIR_CONDITION(m->destination, "destination", JSON_BUILD_STRING(m->destination)), JSON_BUILD_PAIR_CONDITION(m->path, "path", JSON_BUILD_STRING(m->path)), diff --git a/src/libsystemd/sd-bus/bus-dump.c b/src/libsystemd/sd-bus/bus-dump.c index 3ff87be67c..7ee6e7012f 100644 --- a/src/libsystemd/sd-bus/bus-dump.c +++ b/src/libsystemd/sd-bus/bus-dump.c @@ -55,6 +55,15 @@ _public_ int sd_bus_message_dump(sd_bus_message *m, FILE *f, uint64_t flags) { f = stdout; if (flags & SD_BUS_MESSAGE_DUMP_WITH_HEADER) { + char buf[FORMAT_TIMESTAMP_MAX]; + const char *p; + usec_t ts = m->realtime; + + if (ts == 0) + ts = now(CLOCK_REALTIME); + + p = format_timestamp_style(buf, sizeof(buf), ts, TIMESTAMP_US_UTC); + fprintf(f, "%s%s%s Type=%s%s%s Endian=%c Flags=%u Version=%u", m->header->type == SD_BUS_MESSAGE_METHOD_ERROR ? ansi_highlight_red() : @@ -81,6 +90,8 @@ _public_ int sd_bus_message_dump(sd_bus_message *m, FILE *f, uint64_t flags) { if (m->reply_cookie != 0) fprintf(f, " ReplyCookie=%" PRIu64, m->reply_cookie); + fprintf(f, " Timestamp=\"%s\"", strna(p)); + fputs("\n", f); if (m->sender)