[systemd-devel] [PATCH v2] journalctl: add --utc option
Lennart Poettering
lennart at poettering.net
Thu Oct 2 05:53:26 PDT 2014
On Thu, 02.10.14 14:39, Jan Synacek (jsynacek at redhat.com) wrote:
> Introduce option to display time in UTC.
Thanks!
Applied!
> ---
> Changes in v2:
> - move OUTPUT_UTC from OutputMode to OutputFlags
>
> man/journalctl.xml | 7 +++++++
> src/journal/journalctl.c | 11 ++++++++++-
> src/shared/logs-show.c | 8 +++++---
> src/shared/output-mode.h | 1 +
> 4 files changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/man/journalctl.xml b/man/journalctl.xml
> index acd75a6..7fb6afc 100644
> --- a/man/journalctl.xml
> +++ b/man/journalctl.xml
> @@ -380,6 +380,13 @@
> </varlistentry>
>
> <varlistentry>
> + <term><option>--utc</option></term>
> +
> + <listitem><para>Express time in Coordinated Universal
> + Time (UTC).</para></listitem>
> + </varlistentry>
> +
> + <varlistentry>
> <term><option>-x</option></term>
> <term><option>--catalog</option></term>
>
> diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
> index 89a922c..395f85c 100644
> --- a/src/journal/journalctl.c
> +++ b/src/journal/journalctl.c
> @@ -63,6 +63,7 @@
> #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE)
>
> static OutputMode arg_output = OUTPUT_SHORT;
> +static bool arg_utc = false;
> static bool arg_pager_end = false;
> static bool arg_follow = false;
> static bool arg_full = true;
> @@ -191,6 +192,7 @@ static void help(void) {
> " -o --output=STRING Change journal output mode (short, short-iso,\n"
> " short-precise, short-monotonic, verbose,\n"
> " export, json, json-pretty, json-sse, cat)\n"
> + " --utc Express time in Coordinated Universal Time (UTC)\n"
> " -x --catalog Add message explanations where available\n"
> " --no-full Ellipsize fields\n"
> " -a --all Show all fields, including long and unprintable\n"
> @@ -250,6 +252,7 @@ static int parse_argv(int argc, char *argv[]) {
> ARG_DUMP_CATALOG,
> ARG_UPDATE_CATALOG,
> ARG_FORCE,
> + ARG_UTC,
> };
>
> static const struct option options[] = {
> @@ -299,6 +302,7 @@ static int parse_argv(int argc, char *argv[]) {
> { "update-catalog", no_argument, NULL, ARG_UPDATE_CATALOG },
> { "reverse", no_argument, NULL, 'r' },
> { "machine", required_argument, NULL, 'M' },
> + { "utc", no_argument, NULL, ARG_UTC },
> {}
> };
>
> @@ -639,6 +643,10 @@ static int parse_argv(int argc, char *argv[]) {
> arg_reverse = true;
> break;
>
> + case ARG_UTC:
> + arg_utc = true;
> + break;
> +
> case '?':
> return -EINVAL;
>
> @@ -1958,7 +1966,8 @@ int main(int argc, char *argv[]) {
> arg_all * OUTPUT_SHOW_ALL |
> arg_full * OUTPUT_FULL_WIDTH |
> on_tty() * OUTPUT_COLOR |
> - arg_catalog * OUTPUT_CATALOG;
> + arg_catalog * OUTPUT_CATALOG |
> + arg_utc * OUTPUT_UTC;
>
> r = output_journal(stdout, j, arg_output, 0, flags, &ellipsized);
> need_seek = true;
> diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
> index 5a7bbaf..d5d9d09 100644
> --- a/src/shared/logs-show.c
> +++ b/src/shared/logs-show.c
> @@ -311,8 +311,10 @@ static int output_short(
> uint64_t x;
> time_t t;
> struct tm tm;
> + struct tm *(*gettime_r)(const time_t *, struct tm *);
>
> r = -ENOENT;
> + gettime_r = (flags & OUTPUT_UTC) ? gmtime_r : localtime_r;
>
> if (realtime)
> r = safe_atou64(realtime, &x);
> @@ -329,17 +331,17 @@ static int output_short(
>
> switch(mode) {
> case OUTPUT_SHORT_ISO:
> - r = strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S%z", localtime_r(&t, &tm));
> + 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", localtime_r(&t, &tm));
> + 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));
> }
> break;
> default:
> - r = strftime(buf, sizeof(buf), "%b %d %H:%M:%S", localtime_r(&t, &tm));
> + r = strftime(buf, sizeof(buf), "%b %d %H:%M:%S", gettime_r(&t, &tm));
> }
>
> if (r <= 0) {
> diff --git a/src/shared/output-mode.h b/src/shared/output-mode.h
> index ac1bb01..81d7f05 100644
> --- a/src/shared/output-mode.h
> +++ b/src/shared/output-mode.h
> @@ -44,4 +44,5 @@ typedef enum OutputFlags {
> OUTPUT_COLOR = 1 << 4,
> OUTPUT_CATALOG = 1 << 5,
> OUTPUT_BEGIN_NEWLINE = 1 << 6,
> + OUTPUT_UTC = 1 << 7,
> } OutputFlags;
> --
> 1.9.3
>
>
>
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list