diff --git a/caddyhttp/httpserver/logger.go b/caddyhttp/httpserver/logger.go
index f16042c03..29e888a5c 100644
--- a/caddyhttp/httpserver/logger.go
+++ b/caddyhttp/httpserver/logger.go
@@ -91,17 +91,14 @@ selectwriter:
 	switch l.Output {
 	case "", "stderr":
 		l.writer = os.Stderr
-
 	case "stdout":
 		l.writer = os.Stdout
-
 	case "syslog":
 		l.writer, err = gsyslog.NewLogger(gsyslog.LOG_ERR, "LOCAL0", "caddy")
 		if err != nil {
 			return err
 		}
 	default:
-
 		if address := parseSyslogAddress(l.Output); address != nil {
 			l.writer, err = gsyslog.DialLogger(address.network, address.address, gsyslog.LOG_ERR, "LOCAL0", "caddy")
 
@@ -136,6 +133,11 @@ selectwriter:
 
 // Close closes open log files or connections to syslog.
 func (l *Logger) Close() error {
+	// don't close stdout or stderr
+	if l.writer == os.Stdout || l.writer == os.Stderr {
+		return nil
+	}
+
 	// Will close local/remote syslog connections too :)
 	if closer, ok := l.writer.(io.WriteCloser); ok {
 		l.fileMu.Lock()