diff --git a/src/lib/core/say.c b/src/lib/core/say.c
index 64a637c5865f1c97ee4251a088478c10f7502332..dd05285a647c3cdfa8c3c722b48a6640b93b960f 100644
--- a/src/lib/core/say.c
+++ b/src/lib/core/say.c
@@ -168,6 +168,12 @@ log_type()
 	return log_default->type;
 }
 
+int
+log_get_fd(void)
+{
+	return log_default->fd;
+}
+
 void
 log_set_level(struct log *log, enum say_level level)
 {
diff --git a/src/lib/core/say.h b/src/lib/core/say.h
index d26c3ddefa7d75a1dd2be079f7590915b1397696..e17de659cfba2c019fcdd86e317fcb2e2cbfe1bc 100644
--- a/src/lib/core/say.h
+++ b/src/lib/core/say.h
@@ -144,6 +144,7 @@ typedef int (*log_format_func_t)(struct log *log, char *buf, int len, int level,
  * A log object. There is a singleton for the default log.
  */
 struct log {
+	/** The current file descriptor. */
 	int fd;
 	/** The current log level. */
 	int level;
@@ -202,6 +203,12 @@ log_say(struct log *log, int level, const char *filename,
 enum say_logger_type
 log_type();
 
+/**
+ * Default logger file descriptor.
+ */
+int
+log_get_fd(void);
+
 /**
  * Set log level. Can be used dynamically.
  *