Index: uspace/lib/c/generic/io/log.c
===================================================================
--- uspace/lib/c/generic/io/log.c	(revision 702536882b248833b02d3693809a7bb0f21bcbd1)
+++ uspace/lib/c/generic/io/log.c	(revision e0c836e8dbcbc601b10d1087e24e2eb6cbb6ca68)
@@ -43,4 +43,5 @@
 #include <ns.h>
 
+/** Id of the first log we create at logger. */
 static sysarg_t default_log_id;
 
@@ -48,4 +49,5 @@
 static const char *log_prog_name;
 
+/** Names of individual log levels. */
 static const char *log_level_names[] = {
 	"fatal",
@@ -64,4 +66,12 @@
 #define MESSAGE_BUFFER_SIZE 4096
 
+/** Send formatted message to the logger service.
+ *
+ * @param session Initialized IPC session with the logger.
+ * @param log Log to use.
+ * @param level Verbosity level of the message.
+ * @param message The actual message.
+ * @return Error code of the conversion or EOK on success.
+ */
 static int logger_message(async_sess_t *session, log_t log, log_level_t level, char *message)
 {
@@ -98,4 +108,9 @@
 }
 
+/** Get name of the log level.
+ *
+ * @param level The log level.
+ * @return String name or "unknown".
+ */
 const char *log_level_str(log_level_t level)
 {
@@ -106,4 +121,10 @@
 }
 
+/** Convert log level name to the enum.
+ *
+ * @param[in] name Log level name or log level number.
+ * @param[out] level_out Where to store the result (set to NULL to ignore).
+ * @return Error code of the conversion or EOK on success.
+ */
 int log_level_from_str(const char *name, log_level_t *level_out)
 {
@@ -137,5 +158,5 @@
 /** Initialize the logging system.
  *
- * @param prog_name	Program name, will be printed as part of message
+ * @param prog_name Program name, will be printed as part of message
  */
 int log_init(const char *prog_name)
@@ -190,8 +211,10 @@
 /** Write an entry to the log.
  *
- * @param level		Message verbosity level. Message is only printed
- *			if verbosity is less than or equal to current
- *			reporting level.
- * @param fmt		Format string (no traling newline).
+ * The message is printed only if the verbosity level is less than or
+ * equal to currently set reporting level of the log.
+ *
+ * @param ctx Log to use (use LOG_DEFAULT if you have no idea what it means).
+ * @param level Severity level of the message.
+ * @param fmt Format string in printf-like format (without trailing newline).
  */
 void log_msg(log_t ctx, log_level_t level, const char *fmt, ...)
@@ -206,8 +229,8 @@
 /** Write an entry to the log (va_list variant).
  *
- * @param level		Message verbosity level. Message is only printed
- *			if verbosity is less than or equal to current
- *			reporting level.
- * @param fmt		Format string (no trailing newline)
+ * @param ctx Log to use (use LOG_DEFAULT if you have no idea what it means).
+ * @param level Severity level of the message.
+ * @param fmt Format string in printf-like format (without trailing newline).
+ * @param args Arguments.
  */
 void log_msgv(log_t ctx, log_level_t level, const char *fmt, va_list args)
Index: uspace/lib/c/generic/io/logctl.c
===================================================================
--- uspace/lib/c/generic/io/logctl.c	(revision 702536882b248833b02d3693809a7bb0f21bcbd1)
+++ uspace/lib/c/generic/io/logctl.c	(revision e0c836e8dbcbc601b10d1087e24e2eb6cbb6ca68)
@@ -65,5 +65,17 @@
 }
 
-
+/** Set default reported log level (global setting).
+ *
+ * This setting affects all logger clients whose reporting level was
+ * not yet changed.
+ *
+ * If logging level of client A is changed with logctl_set_log_level()
+ * to some level, this call will have no effect at that client's reporting
+ * level. Even if the actual value of the reporting level of client A is
+ * the same as current (previous) default log level.
+ *
+ * @param new_level New reported logging level.
+ * @return Error code of the conversion or EOK on success.
+ */
 int logctl_set_default_level(log_level_t new_level)
 {
@@ -81,4 +93,12 @@
 }
 
+/** Set reported log level of a single log.
+ *
+ * @see logctl_set_default_level
+ *
+ * @param logname Log name.
+ * @param new_level New reported logging level.
+ * @return Error code of the conversion or EOK on success.
+ */
 int logctl_set_log_level(const char *logname, log_level_t new_level)
 {
Index: uspace/lib/c/include/io/log.h
===================================================================
--- uspace/lib/c/include/io/log.h	(revision 702536882b248833b02d3693809a7bb0f21bcbd1)
+++ uspace/lib/c/include/io/log.h	(revision e0c836e8dbcbc601b10d1087e24e2eb6cbb6ca68)
@@ -39,10 +39,17 @@
 #include <io/verify.h>
 
+/** Log message level. */
 typedef enum {
+	/** Fatal error, program is not able to recover at all. */
 	LVL_FATAL,
+	/** Serious error but the program can recover from it. */
 	LVL_ERROR,
+	/** Easily recoverable problem. */
 	LVL_WARN,
+	/** Information message that ought to be printed by default. */
 	LVL_NOTE,
+	/** Debugging purpose message. */
 	LVL_DEBUG,
+	/** More detailed debugging message. */
 	LVL_DEBUG2,
 	
@@ -51,7 +58,13 @@
 } log_level_t;
 
+/** Log itself (logging target). */
 typedef sysarg_t log_t;
+/** Formatting directive for printing log_t. */
 #define PRIlogctx PRIxn
+
+/** Default log (target). */
 #define LOG_DEFAULT ((log_t) -1)
+
+/** Use when creating new top-level log. */
 #define LOG_NO_PARENT ((log_t) 0)
 
