diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-07-10 20:57:30 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2019-07-10 20:57:30 +0200 |
commit | 5d32ae6e95187e1ed617a753f9652b3772252037 (patch) | |
tree | bb710a77bfb4ebd8e765a17c8cdc960eeaaba353 | |
parent | 7bfc855a2040dca14cacd05aeb833f0714292c53 (diff) |
Isolate logger
-rw-r--r-- | cmd/zdns/main.go | 4 | ||||
-rw-r--r-- | cmd/zdns/main_test.go | 4 | ||||
-rw-r--r-- | dns/proxy.go | 2 | ||||
-rw-r--r-- | log/logger.go | 23 | ||||
-rw-r--r-- | server.go | 26 | ||||
-rw-r--r-- | server_test.go | 3 |
6 files changed, 41 insertions, 21 deletions
diff --git a/cmd/zdns/main.go b/cmd/zdns/main.go index 6571c63..9242bad 100644 --- a/cmd/zdns/main.go +++ b/cmd/zdns/main.go @@ -1,13 +1,13 @@ package main import ( - "log" "os" "path/filepath" "flag" "github.com/mpolden/zdns" + "github.com/mpolden/zdns/log" ) const ( @@ -44,7 +44,7 @@ func main() { return } - log := log.New(os.Stderr, logPrefix, 0) + log := log.New(os.Stderr, logPrefix) srv, err := newServer(log, *conf) if err != nil { log.Fatal(err) diff --git a/cmd/zdns/main_test.go b/cmd/zdns/main_test.go index 8b254c2..e0355e3 100644 --- a/cmd/zdns/main_test.go +++ b/cmd/zdns/main_test.go @@ -4,6 +4,8 @@ import ( "io/ioutil" "os" "testing" + + "github.com/mpolden/zdns/log" ) func handleErr(t *testing.T, fn func() error) { @@ -41,7 +43,7 @@ hijack_mode = "zero" t.Fatal(err) } defer handleErr(t, func() error { return os.Remove(f) }) - srv, err := newServer(nil, f) + srv, err := newServer(log.New(ioutil.Discard, ""), f) if err != nil { t.Fatal(err) } diff --git a/dns/proxy.go b/dns/proxy.go index acfd03e..d56e3c8 100644 --- a/dns/proxy.go +++ b/dns/proxy.go @@ -1,13 +1,13 @@ package dns import ( - "log" "net" "strings" "time" "github.com/miekg/dns" "github.com/mpolden/zdns/cache" + "github.com/mpolden/zdns/log" ) // TypeA represents the resource record type A, an IPv4 address. diff --git a/log/logger.go b/log/logger.go new file mode 100644 index 0000000..7de3c02 --- /dev/null +++ b/log/logger.go @@ -0,0 +1,23 @@ +package log + +import ( + "io" + "log" +) + +// A Logger wraps a standard log.Logger. +type Logger struct { + logger *log.Logger +} + +// New creates a new logger wrapping a standard log.Logger. +func New(out io.Writer, logPrefix string) *Logger { + logger := &Logger{logger: log.New(out, logPrefix, 0)} + return logger +} + +// Printf delegates to Printf of log.Logger. +func (l *Logger) Printf(format string, v ...interface{}) { l.logger.Printf(format, v...) } + +// Fatal delegates to Fatal of log.Logger. +func (l *Logger) Fatal(v ...interface{}) { l.logger.Fatal(v...) } @@ -3,7 +3,6 @@ package zdns import ( "fmt" "io" - "log" "net" "net/http" "net/url" @@ -15,6 +14,7 @@ import ( "github.com/mpolden/zdns/dns" "github.com/mpolden/zdns/hosts" + "github.com/mpolden/zdns/log" ) const ( @@ -113,12 +113,6 @@ func nonFqdn(s string) string { return s } -func (s *Server) logf(format string, v ...interface{}) { - if s.logger != nil { - s.logger.Printf(format, v...) - } -} - func (s *Server) readSignal() { for { select { @@ -128,15 +122,15 @@ func (s *Server) readSignal() { case sig := <-s.signal: switch sig { case syscall.SIGHUP: - s.logf("received signal %s: reloading filters", sig) + s.logger.Printf("received signal %s: reloading filters", sig) s.loadHosts() case syscall.SIGTERM, syscall.SIGINT: - s.logf("received signal %s: shutting down", sig) + s.logger.Printf("received signal %s: shutting down", sig) if err := s.Close(); err != nil { - s.logf("close failed: %s", err) + s.logger.Printf("close failed: %s", err) } default: - s.logf("received signal %s: ignoring", sig) + s.logger.Printf("received signal %s: ignoring", sig) } } } @@ -164,7 +158,7 @@ func (s *Server) loadHosts() { var err error hs1, err = readHosts(h.URL, h.timeout) if err != nil { - s.logf("failed to read hosts from %s: %s", h.URL, err) + s.logger.Printf("failed to read hosts from %s: %s", h.URL, err) continue } } @@ -172,7 +166,7 @@ func (s *Server) loadHosts() { for name, ipAddrs := range hs1 { hs[name] = ipAddrs } - s.logf("loaded %d hosts from %s", len(hs1), src) + s.logger.Printf("loaded %d hosts from %s", len(hs1), src) } else { removed := 0 for hostToRemove := range hs1 { @@ -182,14 +176,14 @@ func (s *Server) loadHosts() { } } if removed > 0 { - s.logf("removed %d hosts from %s", removed, src) + s.logger.Printf("removed %d hosts from %s", removed, src) } } } s.mu.Lock() s.hosts = hs s.mu.Unlock() - s.logf("loaded %d hosts in total", len(hs)) + s.logger.Printf("loaded %d hosts in total", len(hs)) } // Close terminates all active operations and shuts down the DNS server. @@ -248,6 +242,6 @@ func (s *Server) hijack(r *dns.Request) *dns.Reply { // ListenAndServe starts a server on configured address and protocol. func (s *Server) ListenAndServe() error { - s.logf("listening on %s [%s]", s.Config.DNS.Listen, s.Config.DNS.Protocol) + s.logger.Printf("listening on %s [%s]", s.Config.DNS.Listen, s.Config.DNS.Protocol) return s.proxy.ListenAndServe(s.Config.DNS.Listen, s.Config.DNS.Protocol) } diff --git a/server_test.go b/server_test.go index d76b944..b323ef2 100644 --- a/server_test.go +++ b/server_test.go @@ -13,6 +13,7 @@ import ( "github.com/mpolden/zdns/dns" "github.com/mpolden/zdns/hosts" + "github.com/mpolden/zdns/log" ) const hostsFile1 = ` @@ -101,7 +102,7 @@ func testServer(t *testing.T, refreshInterval time.Duration) (*Server, func()) { if err := conf.load(); err != nil { t.Fatal(err) } - srv, err = NewServer(nil, conf) + srv, err = NewServer(log.New(ioutil.Discard, ""), conf) if err != nil { defer cleanup() t.Fatal(err) |