maddy

Fork https://github.com/foxcpp/maddy

git clone git://git.lin.moe/go/maddy.git

 1package log
 2
 3import (
 4	"go.uber.org/zap/zapcore"
 5)
 6
 7// TODO: Migrate to using actual zapcore to improve logging performance
 8
 9type zapLogger struct {
10	L Logger
11}
12
13func (l zapLogger) Enabled(level zapcore.Level) bool {
14	if l.L.Debug {
15		return true
16	}
17	return level > zapcore.DebugLevel
18}
19
20func (l zapLogger) With(fields []zapcore.Field) zapcore.Core {
21	enc := zapcore.NewMapObjectEncoder()
22	for _, f := range fields {
23		f.AddTo(enc)
24	}
25	newF := make(map[string]interface{}, len(l.L.Fields)+len(enc.Fields))
26	for k, v := range l.L.Fields {
27		newF[k] = v
28	}
29	for k, v := range enc.Fields {
30		newF[k] = v
31	}
32	l.L.Fields = newF
33	return l
34}
35
36func (l zapLogger) Check(entry zapcore.Entry, ce *zapcore.CheckedEntry) *zapcore.CheckedEntry {
37	if l.Enabled(entry.Level) {
38		return ce.AddCore(entry, l)
39	}
40	return ce
41}
42
43func (l zapLogger) Write(entry zapcore.Entry, fields []zapcore.Field) error {
44	enc := zapcore.NewMapObjectEncoder()
45	for _, f := range fields {
46		f.AddTo(enc)
47	}
48	if entry.LoggerName != "" {
49		l.L.Name += "/" + entry.LoggerName
50	}
51	l.L.log(entry.Level == zapcore.DebugLevel, l.L.formatMsg(entry.Message, enc.Fields))
52	return nil
53}
54
55func (zapLogger) Sync() error {
56	return nil
57}