[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