From 1e8ab1cadf757247f6c086b47f28a0f09e0bf188 Mon Sep 17 00:00:00 2001
From: Matthew Holt <mholt@users.noreply.github.com>
Date: Tue, 18 Apr 2017 16:01:11 -0600
Subject: [PATCH] httpserver: Don't close stdout or stderr when closing logs
 (fix #1471)

---
 caddyhttp/httpserver/logger.go | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

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()