Index: uspace/srv/logger/logger.h
===================================================================
--- uspace/srv/logger/logger.h	(revision 1c67b414600c56792079a7c6f1384f7977abcb71)
+++ uspace/srv/logger/logger.h	(revision 717a0aaf1fa0b7031ec8c04c4f358aa0d8cba5d2)
@@ -54,4 +54,6 @@
 void namespace_writer_detach(logging_namespace_t *);
 
+int namespace_change_level(logging_namespace_t *, log_level_t);
+
 void namespace_wait_for_reader_change(logging_namespace_t *, bool *);
 bool namespace_has_reader(logging_namespace_t *, log_level_t);
Index: uspace/srv/logger/main.c
===================================================================
--- uspace/srv/logger/main.c	(revision 1c67b414600c56792079a7c6f1384f7977abcb71)
+++ uspace/srv/logger/main.c	(revision 717a0aaf1fa0b7031ec8c04c4f358aa0d8cba5d2)
@@ -48,4 +48,23 @@
 #include "logger.h"
 
+static int handle_namespace_level_change(sysarg_t new_level)
+{
+	void *namespace_name;
+	int rc = async_data_write_accept(&namespace_name, true, 0, 0, 0, NULL);
+	if (rc != EOK) {
+		return rc;
+	}
+
+	logging_namespace_t *namespace = namespace_writer_attach((const char *) namespace_name);
+	free(namespace_name);
+	if (namespace == NULL)
+		return ENOENT;
+
+	rc = namespace_change_level(namespace, (log_level_t) new_level);
+	namespace_writer_detach(namespace);
+
+	return rc;
+}
+
 static void connection_handler_control(void)
 {
@@ -67,4 +86,8 @@
 		case LOGGER_CTL_SET_DEFAULT_LEVEL:
 			rc = set_default_logging_level(IPC_GET_ARG1(call));
+			async_answer_0(callid, rc);
+			break;
+		case LOGGER_CTL_SET_NAMESPACE_LEVEL:
+			rc = handle_namespace_level_change(IPC_GET_ARG1(call));
 			async_answer_0(callid, rc);
 			break;
Index: uspace/srv/logger/namespace.c
===================================================================
--- uspace/srv/logger/namespace.c	(revision 1c67b414600c56792079a7c6f1384f7977abcb71)
+++ uspace/srv/logger/namespace.c	(revision 717a0aaf1fa0b7031ec8c04c4f358aa0d8cba5d2)
@@ -34,4 +34,5 @@
 #include <str.h>
 #include <stdio.h>
+#include <errno.h>
 #include "logger.h"
 
@@ -198,4 +199,18 @@
 }
 
+int namespace_change_level(logging_namespace_t *namespace, log_level_t level)
+{
+	if (level >= LVL_LIMIT)
+		return ERANGE;
+
+	fibril_mutex_lock(&namespace->guard);
+	namespace->level = level;
+	fibril_condvar_broadcast(&namespace->level_changed_cv);
+	fibril_mutex_unlock(&namespace->guard);
+
+	return EOK;
+}
+
+
 bool namespace_has_reader(logging_namespace_t *namespace, log_level_t level)
 {
