From 1e8ab1cadf757247f6c086b47f28a0f09e0bf188 Mon Sep 17 00:00:00 2001 From: Matthew Holt 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 f16042c0..29e888a5 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()