Commit 1e8ab1ca authored by Matthew Holt's avatar Matthew Holt

httpserver: Don't close stdout or stderr when closing logs (fix #1471)

parent 729e4f02
...@@ -91,17 +91,14 @@ selectwriter: ...@@ -91,17 +91,14 @@ selectwriter:
switch l.Output { switch l.Output {
case "", "stderr": case "", "stderr":
l.writer = os.Stderr l.writer = os.Stderr
case "stdout": case "stdout":
l.writer = os.Stdout l.writer = os.Stdout
case "syslog": case "syslog":
l.writer, err = gsyslog.NewLogger(gsyslog.LOG_ERR, "LOCAL0", "caddy") l.writer, err = gsyslog.NewLogger(gsyslog.LOG_ERR, "LOCAL0", "caddy")
if err != nil { if err != nil {
return err return err
} }
default: default:
if address := parseSyslogAddress(l.Output); address != nil { if address := parseSyslogAddress(l.Output); address != nil {
l.writer, err = gsyslog.DialLogger(address.network, address.address, gsyslog.LOG_ERR, "LOCAL0", "caddy") l.writer, err = gsyslog.DialLogger(address.network, address.address, gsyslog.LOG_ERR, "LOCAL0", "caddy")
...@@ -136,6 +133,11 @@ selectwriter: ...@@ -136,6 +133,11 @@ selectwriter:
// Close closes open log files or connections to syslog. // Close closes open log files or connections to syslog.
func (l *Logger) Close() error { 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 :) // Will close local/remote syslog connections too :)
if closer, ok := l.writer.(io.WriteCloser); ok { if closer, ok := l.writer.(io.WriteCloser); ok {
l.fileMu.Lock() l.fileMu.Lock()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment