summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-04-20 19:46:37 +0200
committerLennart Poettering <lennart@poettering.net>2016-04-22 16:16:59 +0200
commitbb321ed9a33d6c90e2529db86ffabd913805088a (patch)
tree2632cb4a9847606e890e717319cda99bc9f721ca
parent766cd081525575875dd1291d4de0e65bcb5e1a89 (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.xml10
-rw-r--r--src/shared/logs-show.c13
-rw-r--r--src/shared/output-mode.c1
-rw-r--r--src/shared/output-mode.h1
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,