systemctl: add command set-log-level

Command changes current log level
This commit is contained in:
Václav Pavlín
2013-05-30 20:44:41 -04:00
committed by Zbigniew Jędrzejewski-Szmek
parent 99504dd4c1
commit 76d5a71de9
3 changed files with 59 additions and 2 deletions
+46
View File
@@ -4462,6 +4462,51 @@ finish:
return r;
}
static int set_log_level(DBusConnection *bus, char **args) {
_cleanup_dbus_error_free_ DBusError error;
_cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL;
DBusMessageIter iter, sub;
const char* property = "LogLevel";
const char* interface = "org.freedesktop.systemd1.Manager";
const char* value;
assert(bus);
assert(args);
value = args[1];
dbus_error_init(&error);
m = dbus_message_new_method_call("org.freedesktop.systemd1",
"/org/freedesktop/systemd1",
"org.freedesktop.DBus.Properties",
"Set");
if (!m)
return log_oom();
dbus_message_iter_init_append(m, &iter);
if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &interface) ||
!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &property) ||
!dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, "s", &sub))
return log_oom();
if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &value)) {
dbus_message_iter_abandon_container(&iter, &sub);
return log_oom();
}
if (!dbus_message_iter_close_container(&iter, &sub))
return log_oom();
reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error);
if (!reply) {
log_error("Failed to issue method call: %s", bus_error_message(&error));
return -EIO;
}
return 0;
}
static int unit_is_enabled(DBusConnection *bus, char **args) {
_cleanup_dbus_error_free_ DBusError error;
int r;
@@ -5707,6 +5752,7 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError
{ "list-dependencies", LESS, 2, list_dependencies },
{ "set-default", EQUAL, 2, enable_unit },
{ "get-default", LESS, 1, get_default },
{ "set-log-level", EQUAL, 2, set_log_level },
};
int left;