mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-03 01:17:45 +03:00
analyze: add get-log-level, get-log-target verbs
They’re counterparts to the existing set-log-level and set-log-target verbs, simply printing the current value to stdout. This makes it slightly easier to temporarily change the log level and/or target and then restore the old value(s).
This commit is contained in:
parent
4146ac2a4c
commit
ef5a8cb1a7
5
NEWS
5
NEWS
@ -11,6 +11,11 @@ CHANGES WITH 235:
|
||||
that case users will be prevented from correctly managing bond0
|
||||
interface using networkd.
|
||||
|
||||
* systemd-analyze gained new verbs "get-log-level" and "get-log-target"
|
||||
which print the logging level and target of the system manager,
|
||||
respectively. They complement the existing "set-log-level" and
|
||||
"set-log-target" verbs, which can be used to change those values.
|
||||
|
||||
CHANGES WITH 234:
|
||||
|
||||
* Meson is now supported as build system in addition to Automake. It is
|
||||
|
@ -101,6 +101,16 @@
|
||||
<arg choice="plain">set-log-target</arg>
|
||||
<arg choice="plain"><replaceable>TARGET</replaceable></arg>
|
||||
</cmdsynopsis>
|
||||
<cmdsynopsis>
|
||||
<command>systemd-analyze</command>
|
||||
<arg choice="opt" rep="repeat">OPTIONS</arg>
|
||||
<arg choice="plain">get-log-level</arg>
|
||||
</cmdsynopsis>
|
||||
<cmdsynopsis>
|
||||
<command>systemd-analyze</command>
|
||||
<arg choice="opt" rep="repeat">OPTIONS</arg>
|
||||
<arg choice="plain">get-log-target</arg>
|
||||
</cmdsynopsis>
|
||||
<cmdsynopsis>
|
||||
<command>systemd-analyze</command>
|
||||
<arg choice="opt" rep="repeat">OPTIONS</arg>
|
||||
@ -187,6 +197,12 @@
|
||||
<option>--log-target=</option>, described in
|
||||
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>).</para>
|
||||
|
||||
<para><command>systemd-analyze get-log-level</command>
|
||||
prints the current log level of the <command>systemd</command> daemon.</para>
|
||||
|
||||
<para><command>systemd-analyze get-log-target</command>
|
||||
prints the current log target of the <command>systemd</command> daemon.</para>
|
||||
|
||||
<para><command>systemd-analyze syscall-filter <optional><replaceable>SET</replaceable>…</optional></command>
|
||||
will list system calls contained in the specified system call set <replaceable>SET</replaceable>,
|
||||
or all known sets if no sets are specified. Argument <replaceable>SET</replaceable> must include
|
||||
|
@ -40,7 +40,7 @@ _systemd_analyze() {
|
||||
)
|
||||
|
||||
local -A VERBS=(
|
||||
[STANDALONE]='time blame plot dump'
|
||||
[STANDALONE]='time blame plot dump get-log-level get-log-target'
|
||||
[CRITICAL_CHAIN]='critical-chain'
|
||||
[DOT]='dot'
|
||||
[LOG_LEVEL]='set-log-level'
|
||||
|
@ -28,6 +28,8 @@ _systemd_analyze_command(){
|
||||
'dump:Dump server status'
|
||||
'set-log-level:Set systemd log threshold'
|
||||
'set-log-target:Set systemd log target'
|
||||
'get-log-level:Get systemd log threshold'
|
||||
'get-log-target:Get systemd log target'
|
||||
'syscall-filter:List syscalls in seccomp filter'
|
||||
'verify:Check unit files for correctness'
|
||||
)
|
||||
|
@ -1253,6 +1253,34 @@ static int set_log_level(sd_bus *bus, char **args) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int get_log_level(sd_bus *bus, char **args) {
|
||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||
int r;
|
||||
_cleanup_free_ char *level = NULL;
|
||||
|
||||
assert(bus);
|
||||
assert(args);
|
||||
|
||||
if (!strv_isempty(args)) {
|
||||
log_error("Too many arguments.");
|
||||
return -E2BIG;
|
||||
}
|
||||
|
||||
r = sd_bus_get_property_string(
|
||||
bus,
|
||||
"org.freedesktop.systemd1",
|
||||
"/org/freedesktop/systemd1",
|
||||
"org.freedesktop.systemd1.Manager",
|
||||
"LogLevel",
|
||||
&error,
|
||||
&level);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to get log level: %s", bus_error_message(&error, r));
|
||||
|
||||
puts(level);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int set_log_target(sd_bus *bus, char **args) {
|
||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||
int r;
|
||||
@ -1280,6 +1308,34 @@ static int set_log_target(sd_bus *bus, char **args) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int get_log_target(sd_bus *bus, char **args) {
|
||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||
int r;
|
||||
_cleanup_free_ char *target = NULL;
|
||||
|
||||
assert(bus);
|
||||
assert(args);
|
||||
|
||||
if (!strv_isempty(args)) {
|
||||
log_error("Too many arguments.");
|
||||
return -E2BIG;
|
||||
}
|
||||
|
||||
r = sd_bus_get_property_string(
|
||||
bus,
|
||||
"org.freedesktop.systemd1",
|
||||
"/org/freedesktop/systemd1",
|
||||
"org.freedesktop.systemd1.Manager",
|
||||
"LogTarget",
|
||||
&error,
|
||||
&target);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to get log target: %s", bus_error_message(&error, r));
|
||||
|
||||
puts(target);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef HAVE_SECCOMP
|
||||
static void dump_syscall_filter(const SyscallFilterSet *set) {
|
||||
const char *syscall;
|
||||
@ -1365,6 +1421,8 @@ static void help(void) {
|
||||
" dot Output dependency graph in man:dot(1) format\n"
|
||||
" set-log-level LEVEL Set logging threshold for manager\n"
|
||||
" set-log-target TARGET Set logging target for manager\n"
|
||||
" get-log-level Get logging threshold for manager\n"
|
||||
" get-log-target Get logging target for manager\n"
|
||||
" dump Output state serialization of service manager\n"
|
||||
" syscall-filter [NAME...] Print list of syscalls in seccomp filter\n"
|
||||
" verify FILE... Check unit files for correctness\n"
|
||||
@ -1532,8 +1590,12 @@ int main(int argc, char *argv[]) {
|
||||
r = dump(bus, argv+optind+1);
|
||||
else if (streq(argv[optind], "set-log-level"))
|
||||
r = set_log_level(bus, argv+optind+1);
|
||||
else if (streq(argv[optind], "get-log-level"))
|
||||
r = get_log_level(bus, argv+optind+1);
|
||||
else if (streq(argv[optind], "set-log-target"))
|
||||
r = set_log_target(bus, argv+optind+1);
|
||||
else if (streq(argv[optind], "get-log-target"))
|
||||
r = get_log_target(bus, argv+optind+1);
|
||||
else if (streq(argv[optind], "syscall-filter"))
|
||||
r = dump_syscall_filters(argv+optind+1);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user