journalctl: add --no-hostname switch

This suppresses output of the hostname for messages from the local system.

Fixes: #2342
This commit is contained in:
Lennart Poettering 2016-04-20 20:09:57 +02:00
parent bb321ed9a3
commit 991e274b61
4 changed files with 24 additions and 1 deletions

View file

@ -359,6 +359,13 @@
(UTC).</para></listitem> (UTC).</para></listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>--no-hostname</option></term>
<listitem><para>Don't show the hostname field of log messages originating from the local host. This switch only
has an effect on the <option>short</option> family of output modes (see above).</para></listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-x</option></term> <term><option>-x</option></term>
<term><option>--catalog</option></term> <term><option>--catalog</option></term>

View file

@ -95,6 +95,7 @@ static bool arg_boot = false;
static sd_id128_t arg_boot_id = {}; static sd_id128_t arg_boot_id = {};
static int arg_boot_offset = 0; static int arg_boot_offset = 0;
static bool arg_dmesg = false; static bool arg_dmesg = false;
static bool arg_no_hostname = false;
static const char *arg_cursor = NULL; static const char *arg_cursor = NULL;
static const char *arg_after_cursor = NULL; static const char *arg_after_cursor = NULL;
static bool arg_show_cursor = false; static bool arg_show_cursor = false;
@ -304,6 +305,7 @@ static void help(void) {
" -a --all Show all fields, including long and unprintable\n" " -a --all Show all fields, including long and unprintable\n"
" -q --quiet Do not show info messages and privilege warning\n" " -q --quiet Do not show info messages and privilege warning\n"
" --no-pager Do not pipe output into a pager\n" " --no-pager Do not pipe output into a pager\n"
" --no-hostname Suppress output of hostname field\n"
" -m --merge Show entries from all available journals\n" " -m --merge Show entries from all available journals\n"
" -D --directory=PATH Show journal files from directory\n" " -D --directory=PATH Show journal files from directory\n"
" --file=PATH Show journal file\n" " --file=PATH Show journal file\n"
@ -370,6 +372,7 @@ static int parse_argv(int argc, char *argv[]) {
ARG_VACUUM_SIZE, ARG_VACUUM_SIZE,
ARG_VACUUM_FILES, ARG_VACUUM_FILES,
ARG_VACUUM_TIME, ARG_VACUUM_TIME,
ARG_NO_HOSTNAME,
}; };
static const struct option options[] = { static const struct option options[] = {
@ -427,6 +430,7 @@ static int parse_argv(int argc, char *argv[]) {
{ "vacuum-size", required_argument, NULL, ARG_VACUUM_SIZE }, { "vacuum-size", required_argument, NULL, ARG_VACUUM_SIZE },
{ "vacuum-files", required_argument, NULL, ARG_VACUUM_FILES }, { "vacuum-files", required_argument, NULL, ARG_VACUUM_FILES },
{ "vacuum-time", required_argument, NULL, ARG_VACUUM_TIME }, { "vacuum-time", required_argument, NULL, ARG_VACUUM_TIME },
{ "no-hostname", no_argument, NULL, ARG_NO_HOSTNAME },
{} {}
}; };
@ -780,6 +784,10 @@ static int parse_argv(int argc, char *argv[]) {
arg_action = ACTION_LIST_FIELD_NAMES; arg_action = ACTION_LIST_FIELD_NAMES;
break; break;
case ARG_NO_HOSTNAME:
arg_no_hostname = true;
break;
case 'x': case 'x':
arg_catalog = true; arg_catalog = true;
break; break;
@ -2444,7 +2452,8 @@ int main(int argc, char *argv[]) {
arg_full * OUTPUT_FULL_WIDTH | arg_full * OUTPUT_FULL_WIDTH |
colors_enabled() * OUTPUT_COLOR | colors_enabled() * OUTPUT_COLOR |
arg_catalog * OUTPUT_CATALOG | arg_catalog * OUTPUT_CATALOG |
arg_utc * OUTPUT_UTC; arg_utc * OUTPUT_UTC |
arg_no_hostname * OUTPUT_NO_HOSTNAME;
r = output_journal(stdout, j, arg_output, 0, flags, &ellipsized); r = output_journal(stdout, j, arg_output, 0, flags, &ellipsized);
need_seek = true; need_seek = true;

View file

@ -373,6 +373,12 @@ static int output_short(
n += strlen(buf); n += strlen(buf);
} }
if (hostname && (flags & OUTPUT_NO_HOSTNAME)) {
/* Suppress display of the hostname if this is requested. */
hostname = NULL;
hostname_len = 0;
}
if (hostname && shall_print(hostname, hostname_len, flags)) { if (hostname && shall_print(hostname, hostname_len, flags)) {
fprintf(f, " %.*s", (int) hostname_len, hostname); fprintf(f, " %.*s", (int) hostname_len, hostname);
n += hostname_len + 1; n += hostname_len + 1;

View file

@ -50,6 +50,7 @@ typedef enum OutputFlags {
OUTPUT_BEGIN_NEWLINE = 1 << 6, OUTPUT_BEGIN_NEWLINE = 1 << 6,
OUTPUT_UTC = 1 << 7, OUTPUT_UTC = 1 << 7,
OUTPUT_KERNEL_THREADS = 1 << 8, OUTPUT_KERNEL_THREADS = 1 << 8,
OUTPUT_NO_HOSTNAME = 1 << 9,
} OutputFlags; } OutputFlags;
const char* output_mode_to_string(OutputMode m) _const_; const char* output_mode_to_string(OutputMode m) _const_;