diff --git a/src/say.cc b/src/say.cc
index 974a55d973f1ecd275952576c48877cf759a6680..648f507202ee718f950f69f3ea686911c8908db2 100644
--- a/src/say.cc
+++ b/src/say.cc
@@ -43,9 +43,10 @@
 
 char log_path[PATH_MAX + 1];
 int log_fd = STDERR_FILENO;
-int logger_nonblock;
+static int logger_nonblock;
 pid_t logger_pid;
 static bool booting = true;
+static bool logger_background = true;
 static const char *binary_filename;
 static int log_level_default = S_INFO;
 static int *log_level = &log_level_default;
@@ -180,10 +181,11 @@ say_logrotate(int /* signo */)
 		      S_IRUSR | S_IWUSR | S_IRGRP);
 	if (log_fd < 0)
 		return;
-#if 0
-	dup2(log_fd, STDOUT_FILENO);
-#endif
-	dup2(log_fd, STDERR_FILENO);
+
+	if (logger_background) {
+		dup2(log_fd, STDOUT_FILENO);
+		dup2(log_fd, STDERR_FILENO);
+	}
 	if (logger_nonblock) {
 		int flags = fcntl(log_fd, F_GETFL, 0);
 		fcntl(log_fd, F_SETFL, flags | O_NONBLOCK);
@@ -216,6 +218,7 @@ say_logger_init(const char *path, int level, int nonblock, int background)
 {
 	*log_level = level;
 	logger_nonblock = nonblock;
+	logger_background = background;
 	setvbuf(stderr, NULL, _IONBF, 0);
 
 	if (path != NULL) {