Limit the options in both errors and log middleware, just output to stdout and let someone else (journald,docker) care about where to route the logs. This removes syslog and logging to a file. Fixes #573 #602
55 lines
997 B
Go
55 lines
997 B
Go
package errors
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/coredns/coredns/core/dnsserver"
|
|
"github.com/coredns/coredns/middleware"
|
|
|
|
"github.com/mholt/caddy"
|
|
)
|
|
|
|
func init() {
|
|
caddy.RegisterPlugin("errors", caddy.Plugin{
|
|
ServerType: "dns",
|
|
Action: setup,
|
|
})
|
|
}
|
|
|
|
func setup(c *caddy.Controller) error {
|
|
handler, err := errorsParse(c)
|
|
if err != nil {
|
|
return middleware.Error("errors", err)
|
|
}
|
|
|
|
handler.Log = log.New(os.Stdout, "", 0)
|
|
|
|
dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
|
|
handler.Next = next
|
|
return handler
|
|
})
|
|
|
|
return nil
|
|
}
|
|
|
|
func errorsParse(c *caddy.Controller) (errorHandler, error) {
|
|
handler := errorHandler{}
|
|
|
|
for c.Next() {
|
|
args := c.RemainingArgs()
|
|
switch len(args) {
|
|
case 0:
|
|
handler.LogFile = "stdout"
|
|
case 1:
|
|
if args[0] != "stdout" {
|
|
return handler, fmt.Errorf("invalid log file: %s", args[0])
|
|
}
|
|
handler.LogFile = args[0]
|
|
default:
|
|
return handler, c.ArgErr()
|
|
}
|
|
}
|
|
return handler, nil
|
|
}
|