mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
journal/cat: allow connecting output to specific journal namespace
This commit is contained in:
parent
d4923a13b7
commit
45bcab66a9
@ -123,6 +123,17 @@
|
||||
boolean argument.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--namespace=</option></term>
|
||||
|
||||
<listitem><para>Specifies the journal namespace to which the standard IO should be connected.
|
||||
For details about journal namespaces, see
|
||||
<citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
|
||||
</para>
|
||||
|
||||
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</refsect1>
|
||||
@ -130,8 +141,7 @@
|
||||
<refsect1>
|
||||
<title>Exit status</title>
|
||||
|
||||
<para>On success, 0 is returned, a non-zero failure code
|
||||
otherwise.</para>
|
||||
<para>On success, 0 is returned, a non-zero failure code otherwise.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "terminal-util.h"
|
||||
|
||||
static const char *arg_identifier = NULL;
|
||||
static const char *arg_namespace = NULL;
|
||||
static int arg_priority = LOG_INFO;
|
||||
static int arg_stderr_priority = -1;
|
||||
static bool arg_level_prefix = true;
|
||||
@ -44,6 +45,7 @@ static int help(void) {
|
||||
" -p --priority=PRIORITY Set priority value (0..7)\n"
|
||||
" --stderr-priority=PRIORITY Set priority value (0..7) used for stderr\n"
|
||||
" --level-prefix=BOOL Control whether level prefix shall be parsed\n"
|
||||
" --namespace=NAMESPACE Connect to specified journal namespace\n"
|
||||
"\nSee the %s for details.\n",
|
||||
program_invocation_short_name,
|
||||
ansi_highlight(),
|
||||
@ -58,7 +60,8 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
enum {
|
||||
ARG_VERSION = 0x100,
|
||||
ARG_STDERR_PRIORITY,
|
||||
ARG_LEVEL_PREFIX
|
||||
ARG_LEVEL_PREFIX,
|
||||
ARG_NAMESPACE,
|
||||
};
|
||||
|
||||
static const struct option options[] = {
|
||||
@ -68,6 +71,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
{ "priority", required_argument, NULL, 'p' },
|
||||
{ "stderr-priority", required_argument, NULL, ARG_STDERR_PRIORITY },
|
||||
{ "level-prefix", required_argument, NULL, ARG_LEVEL_PREFIX },
|
||||
{ "namespace", required_argument, NULL, ARG_NAMESPACE },
|
||||
{}
|
||||
};
|
||||
|
||||
@ -117,6 +121,13 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
return r;
|
||||
break;
|
||||
|
||||
case ARG_NAMESPACE:
|
||||
if (isempty(optarg))
|
||||
arg_namespace = NULL;
|
||||
else
|
||||
arg_namespace = optarg;
|
||||
break;
|
||||
|
||||
case '?':
|
||||
return -EINVAL;
|
||||
|
||||
@ -137,12 +148,12 @@ static int run(int argc, char *argv[]) {
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
outfd = sd_journal_stream_fd(arg_identifier, arg_priority, arg_level_prefix);
|
||||
outfd = sd_journal_stream_fd_with_namespace(arg_namespace, arg_identifier, arg_priority, arg_level_prefix);
|
||||
if (outfd < 0)
|
||||
return log_error_errno(outfd, "Failed to create stream fd: %m");
|
||||
|
||||
if (arg_stderr_priority >= 0 && arg_stderr_priority != arg_priority) {
|
||||
errfd = sd_journal_stream_fd(arg_identifier, arg_stderr_priority, arg_level_prefix);
|
||||
errfd = sd_journal_stream_fd_with_namespace(arg_namespace, arg_identifier, arg_stderr_priority, arg_level_prefix);
|
||||
if (errfd < 0)
|
||||
return log_error_errno(errfd, "Failed to create stream fd: %m");
|
||||
}
|
||||
|
15
test/units/testsuite-04.cat.sh
Executable file
15
test/units/testsuite-04.cat.sh
Executable file
@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
systemctl enable --now systemd-journald@cat-test.socket
|
||||
|
||||
systemd-cat --namespace cat-test env CAT_TEST_RESULT=1
|
||||
|
||||
timeout 30 bash -c "until systemctl -q is-active systemd-journald@cat-test.service; do sleep .5; done"
|
||||
|
||||
journalctl --namespace cat-test --grep "JOURNAL_STREAM="
|
||||
journalctl --namespace cat-test --grep "CAT_TEST_RESULT=1"
|
||||
|
||||
systemctl disable --now systemd-journald@cat-test.socket
|
Loading…
Reference in New Issue
Block a user