aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-07-10 20:57:30 +0200
committerMartin Polden <mpolden@mpolden.no>2019-07-10 20:57:30 +0200
commit5d32ae6e95187e1ed617a753f9652b3772252037 (patch)
treebb710a77bfb4ebd8e765a17c8cdc960eeaaba353
parent7bfc855a2040dca14cacd05aeb833f0714292c53 (diff)
Isolate logger
-rw-r--r--cmd/zdns/main.go4
-rw-r--r--cmd/zdns/main_test.go4
-rw-r--r--dns/proxy.go2
-rw-r--r--log/logger.go23
-rw-r--r--server.go26
-rw-r--r--server_test.go3
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...) }
diff --git a/server.go b/server.go
index de1279f..8b6e2ce 100644
--- a/server.go
+++ b/server.go
@@ -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)