Index: uspace/srv/logger/logger.h
===================================================================
--- uspace/srv/logger/logger.h	(revision 1f2dd20bb7535f5d8a3876582e186cb29b7d6453)
+++ uspace/srv/logger/logger.h	(revision f6bc83a793a7ad8abd2ad83063d699b6dfce0754)
@@ -65,4 +65,5 @@
 void namespace_writer_detach(logging_namespace_t *);
 
+bool namespace_has_reader(logging_namespace_t *);
 void namespace_add_message(logging_namespace_t *, const char *, log_level_t);
 log_message_t *namespace_get_next_message(logging_namespace_t *);
Index: uspace/srv/logger/main.c
===================================================================
--- uspace/srv/logger/main.c	(revision 1f2dd20bb7535f5d8a3876582e186cb29b7d6453)
+++ uspace/srv/logger/main.c	(revision f6bc83a793a7ad8abd2ad83063d699b6dfce0754)
@@ -74,4 +74,17 @@
 static int handle_receive_message(logging_namespace_t *namespace, int level)
 {
+	bool skip_message = (level > DEFAULT_LOGGING_LEVEL) || !namespace_has_reader(namespace);
+	if (skip_message) {
+		/* Abort the actual message buffer transfer. */
+		ipc_callid_t callid;
+		size_t size;
+		int rc = ENAK;
+		if (!async_data_write_receive(&callid, &size))
+			rc = EINVAL;
+
+		async_answer_0(callid, rc);
+		return rc;
+	}
+
 	void *message;
 	int rc = async_data_write_accept(&message, true, 0, 0, 0, NULL);
Index: uspace/srv/logger/namespace.c
===================================================================
--- uspace/srv/logger/namespace.c	(revision 1f2dd20bb7535f5d8a3876582e186cb29b7d6453)
+++ uspace/srv/logger/namespace.c	(revision f6bc83a793a7ad8abd2ad83063d699b6dfce0754)
@@ -193,4 +193,11 @@
 }
 
+bool namespace_has_reader(logging_namespace_t *namespace)
+{
+	fibril_mutex_lock(&namespace->guard);
+	bool has_reader = namespace->has_reader;
+	fibril_mutex_unlock(&namespace->guard);
+	return has_reader;
+}
 
 
