Add possibility have "short" output with long format ISO 8601 timestamps, like "2008-05-28T14:14:46.316223-04:00". --- man/journalctl.xml | 8 ++++++++ src/journal/journalctl.c | 11 ++++++++++- src/shared/logs-show.c | 8 +++++++- src/shared/output-mode.h | 3 ++- 4 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/man/journalctl.xml b/man/journalctl.xml index 3e03c45..8c9a796 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -170,6 +170,14 @@ </varlistentry> <varlistentry> + <term><option>--iso-dates</option></term> + + <listitem><para>In "short" output mode, + show timestamps in verbose, ISO 8601 format. + </para></listitem> + </varlistentry> + + <varlistentry> <term><option>-f</option></term> <term><option>--follow</option></term> diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 7099706..3709319 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -65,6 +65,7 @@ static bool arg_pager_end = false; static bool arg_follow = false; static bool arg_full = false; static bool arg_all = false; +static bool arg_iso_dates = false; static bool arg_no_pager = false; static int arg_lines = -1; static bool arg_no_tail = false; @@ -138,6 +139,7 @@ static int help(void) { " -x --catalog Add message explanations where available\n" " -l --full Do not ellipsize fields\n" " -a --all Show all fields, including long and unprintable\n" + " --iso-dates Show ISO 8601 full timestamps in short output mode\n" " -q --quiet Don't show privilege warning\n" " --no-pager Do not pipe output into a pager\n" " -m --merge Show entries from all available journals\n" @@ -194,6 +196,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_DUMP_CATALOG, ARG_UPDATE_CATALOG, ARG_FORCE, + ARG_ISO_DATES, }; static const struct option options[] = { @@ -239,6 +242,7 @@ static int parse_argv(int argc, char *argv[]) { { "dump-catalog", no_argument, NULL, ARG_DUMP_CATALOG }, { "update-catalog", no_argument, NULL, ARG_UPDATE_CATALOG }, { "reverse", no_argument, NULL, 'r' }, + { "iso-dates", no_argument, NULL, ARG_ISO_DATES }, { NULL, 0, NULL, 0 } }; @@ -300,6 +304,10 @@ static int parse_argv(int argc, char *argv[]) { arg_all = true; break; + case ARG_ISO_DATES: + arg_iso_dates = true; + break; + case 'n': if (optarg) { r = safe_atoi(optarg, &arg_lines); @@ -1605,7 +1613,8 @@ int main(int argc, char *argv[]) { arg_all * OUTPUT_SHOW_ALL | (arg_full || !on_tty() || pager_have()) * OUTPUT_FULL_WIDTH | on_tty() * OUTPUT_COLOR | - arg_catalog * OUTPUT_CATALOG; + arg_catalog * OUTPUT_CATALOG | + arg_iso_dates * OUTPUT_ISO_DATES; r = output_journal(stdout, j, arg_output, 0, flags); need_seek = true; diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index ea47468..1753ca8 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -258,6 +258,7 @@ static int output_short( uint64_t x; time_t t; struct tm tm; + const char *timestamp_format; r = -ENOENT; @@ -272,8 +273,13 @@ static int output_short( return r; } + if (flags & OUTPUT_ISO_DATES) + timestamp_format = "%Y-%m-%dT%H:%M:%S%z"; + else + timestamp_format = "%b %d %H:%M:%S"; + t = (time_t) (x / USEC_PER_SEC); - if (strftime(buf, sizeof(buf), "%b %d %H:%M:%S", localtime_r(&t, &tm)) <= 0) { + if (strftime(buf, sizeof(buf), timestamp_format, localtime_r(&t, &tm)) <= 0) { log_error("Failed to format time."); return r; } diff --git a/src/shared/output-mode.h b/src/shared/output-mode.h index 0efd430..0b860e5 100644 --- a/src/shared/output-mode.h +++ b/src/shared/output-mode.h @@ -40,5 +40,6 @@ typedef enum OutputFlags { OUTPUT_WARN_CUTOFF = 1 << 2, OUTPUT_FULL_WIDTH = 1 << 3, OUTPUT_COLOR = 1 << 4, - OUTPUT_CATALOG = 1 << 5 + OUTPUT_CATALOG = 1 << 5, + OUTPUT_ISO_DATES = 1 << 6 } OutputFlags; -- 1.8.3.1 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel