Use logging (#1718)

* update docs

* plugins: use plugin specific logging

Hooking up pkg/log also changed NewWithPlugin to just take a string
instead of a plugin.Handler as that is more flexible and for instance
the Root "plugin" doesn't implement it fully.

Same logging from the reload plugin:

.:1043
2018/04/22 08:56:37 [INFO] CoreDNS-1.1.1
2018/04/22 08:56:37 [INFO] linux/amd64, go1.10.1,
CoreDNS-1.1.1
linux/amd64, go1.10.1,
2018/04/22 08:56:37 [INFO] plugin/reload: Running configuration MD5 = ec4c9c55cd19759ea1c46b8c45742b06
2018/04/22 08:56:54 [INFO] Reloading
2018/04/22 08:56:54 [INFO] plugin/reload: Running configuration MD5 = 9e2bfdd85bdc9cceb740ba9c80f34c1a
2018/04/22 08:56:54 [INFO] Reloading complete

* update docs

* better doc
This commit is contained in:
Miek Gieben
2018-04-22 21:40:33 +01:00
committed by GitHub
parent 0930eb8beb
commit 12b2ff9740
36 changed files with 61 additions and 45 deletions

View File

@@ -3,8 +3,6 @@ package log
import (
"fmt"
golog "log"
"github.com/coredns/coredns/plugin"
)
// P is a logger that includes the plugin doing the logging.
@@ -12,9 +10,9 @@ type P struct {
plugin string
}
// NewWithPlugin return a logger that shows the plugin that logs the message.
// NewWithPlugin returns a logger that includes "plugin/name: " in the log message.
// I.e [INFO] plugin/<name>: message.
func NewWithPlugin(h plugin.Handler) P { return P{h.Name()} }
func NewWithPlugin(name string) P { return P{name} }
func (p P) logf(level, format string, v ...interface{}) {
s := level + pFormat(p.plugin) + fmt.Sprintf(format, v...)

View File

@@ -2,28 +2,17 @@ package log
import (
"bytes"
"context"
golog "log"
"strings"
"testing"
"github.com/miekg/dns"
)
type p struct{}
func (p p) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
return 0, nil
}
func (p p) Name() string { return "testplugin" }
func TestPlugins(t *testing.T) {
var f bytes.Buffer
const ts = "test"
golog.SetOutput(&f)
lg := NewWithPlugin(p{})
lg := NewWithPlugin("testplugin")
lg.Info(ts)
if x := f.String(); !strings.Contains(x, "plugin/testplugin") {