journalctl: add --utc option

Introduce option to display time in UTC.
This commit is contained in:
Jan Synacek
2014-10-02 14:39:29 +02:00
committed by Lennart Poettering
parent b344bcbbfd
commit 9fd290443f
4 changed files with 23 additions and 4 deletions

View File

@@ -379,6 +379,13 @@
</listitem>
</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>

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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;