diff options
Diffstat (limited to 'src/analyze/analyze.c')
-rw-r--r-- | src/analyze/analyze.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index 1eb2ca0ccf..a6a36a3d2e 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -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 |