mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 10:13:14 -04:00 
			
		
		
		
	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
		
			
				
	
	
		
			56 lines
		
	
	
		
			997 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			56 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
 | |
| }
 |