diff options
author | Lennart Poettering <lennart@poettering.net> | 2016-04-20 19:46:37 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2016-04-22 16:16:59 +0200 |
commit | bb321ed9a33d6c90e2529db86ffabd913805088a (patch) | |
tree | 2632cb4a9847606e890e717319cda99bc9f721ca | |
parent | 766cd081525575875dd1291d4de0e65bcb5e1a89 (diff) |
journalctl: add output mode where time is shown in seconds since 1st Jan 1970 UTC
aka "UNIX time".
Fixes: #2120
-rw-r--r-- | man/journalctl.xml | 10 | ||||
-rw-r--r-- | src/shared/logs-show.c | 13 | ||||
-rw-r--r-- | src/shared/output-mode.c | 1 | ||||
-rw-r--r-- | src/shared/output-mode.h | 1 |
4 files changed, 22 insertions, 3 deletions
diff --git a/man/journalctl.xml b/man/journalctl.xml index 7a634879cc..c448e0771b 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -272,6 +272,16 @@ <varlistentry> <term> + <option>short-unix</option> + </term> + <listitem> + <para>is very similar, but shows seconds passed since January 1st 1970 UTC instead of wallclock + timestamps ("UNIX time"). The time is shown with microsecond accuracy.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term> <option>verbose</option> </term> <listitem> diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 895223a4d9..5cfa455e05 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -344,16 +344,22 @@ static int output_short( t = (time_t) (x / USEC_PER_SEC); - switch(mode) { + switch (mode) { + + case OUTPUT_SHORT_UNIX: + r = snprintf(buf, sizeof(buf), "%10llu.%06llu", (unsigned long long) t, (unsigned long long) (x % USEC_PER_SEC)); + break; + case OUTPUT_SHORT_ISO: r = strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S%z", gettime_r(&t, &tm)); break; + case OUTPUT_SHORT_PRECISE: r = strftime(buf, sizeof(buf), "%b %d %H:%M:%S", gettime_r(&t, &tm)); if (r > 0) - snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), - ".%06llu", (unsigned long long) (x % USEC_PER_SEC)); + snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), ".%06llu", (unsigned long long) (x % USEC_PER_SEC)); break; + default: r = strftime(buf, sizeof(buf), "%b %d %H:%M:%S", gettime_r(&t, &tm)); } @@ -894,6 +900,7 @@ static int (*output_funcs[_OUTPUT_MODE_MAX])( [OUTPUT_SHORT_ISO] = output_short, [OUTPUT_SHORT_PRECISE] = output_short, [OUTPUT_SHORT_MONOTONIC] = output_short, + [OUTPUT_SHORT_UNIX] = output_short, [OUTPUT_VERBOSE] = output_verbose, [OUTPUT_EXPORT] = output_export, [OUTPUT_JSON] = output_json, diff --git a/src/shared/output-mode.c b/src/shared/output-mode.c index be6281bd3f..bec53ee0ae 100644 --- a/src/shared/output-mode.c +++ b/src/shared/output-mode.c @@ -25,6 +25,7 @@ static const char *const output_mode_table[_OUTPUT_MODE_MAX] = { [OUTPUT_SHORT_ISO] = "short-iso", [OUTPUT_SHORT_PRECISE] = "short-precise", [OUTPUT_SHORT_MONOTONIC] = "short-monotonic", + [OUTPUT_SHORT_UNIX] = "short-unix", [OUTPUT_VERBOSE] = "verbose", [OUTPUT_EXPORT] = "export", [OUTPUT_JSON] = "json", diff --git a/src/shared/output-mode.h b/src/shared/output-mode.h index ea2e95f06b..56fd3ba8e3 100644 --- a/src/shared/output-mode.h +++ b/src/shared/output-mode.h @@ -26,6 +26,7 @@ typedef enum OutputMode { OUTPUT_SHORT_ISO, OUTPUT_SHORT_PRECISE, OUTPUT_SHORT_MONOTONIC, + OUTPUT_SHORT_UNIX, OUTPUT_VERBOSE, OUTPUT_EXPORT, OUTPUT_JSON, |