coredns/middleware/errors/setup.go
Miek Gieben e261ac1a6e middleware/{log,errors}: output everything to stdout (#684)
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
2017-05-31 20:28:53 +01:00

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
}