--- a/pppd/main.c
+++ b/pppd/main.c
@@ -1570,6 +1570,8 @@ safe_fork(int infd, int outfd, int errfd
 	if (errfd == 0 || errfd == 1)
 		errfd = dup(errfd);
 
+	closelog();
+
 	/* dup the in, out, err fds to 0, 1, 2 */
 	if (infd != 0)
 		dup2(infd, 0);
@@ -1578,7 +1580,6 @@ safe_fork(int infd, int outfd, int errfd
 	if (errfd != 2)
 		dup2(errfd, 2);
 
-	closelog();
 	if (log_to_fd > 2)
 		close(log_to_fd);
 	if (the_channel->close)