/
zap.go
105 lines (84 loc) · 2.18 KB
/
zap.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package loggo
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"io"
"strings"
)
type zapLog struct {
*zap.SugaredLogger
}
func NewZapLog(level string, output io.Writer) Log {
alevel := zap.NewAtomicLevel()
w := zapcore.AddSync(output)
alevel.SetLevel(ParseZapLevel(level))
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.CallerKey = "file"
encoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05")
core := zapcore.NewCore(
zapcore.NewJSONEncoder(encoderConfig),
w,
alevel,
)
return &zapLog{zap.New(core, zap.AddCaller(), zap.AddCallerSkip(2)).Sugar()}
}
func (z *zapLog) Print(v ...interface{}) {
z.SugaredLogger.Info(v...)
}
func (z *zapLog) Println(v ...interface{}) {
z.SugaredLogger.Info(v...)
}
func (z *zapLog) Debug(v ...interface{}) {
z.SugaredLogger.Debug(v...)
}
func (z *zapLog) Debugf(msg string, v ...interface{}) {
z.SugaredLogger.Debugf(msg, v...)
}
func (z *zapLog) Info(v ...interface{}) {
z.SugaredLogger.Info(v...)
}
func (z *zapLog) Infof(msg string, v ...interface{}) {
z.SugaredLogger.Infof(msg, v...)
}
func (z *zapLog) Warn(v ...interface{}) {
z.SugaredLogger.Warn(v...)
}
func (z *zapLog) Warnf(msg string, v ...interface{}) {
z.SugaredLogger.Warnf(msg, v...)
}
func (z *zapLog) Error(v ...interface{}) {
z.SugaredLogger.Error(v...)
}
func (z *zapLog) Errorf(msg string, v ...interface{}) {
z.SugaredLogger.Errorf(msg, v...)
}
func (z *zapLog) Panic(v ...interface{}) {
z.SugaredLogger.Panic(v...)
}
func (z *zapLog) Panicf(msg string, v ...interface{}) {
z.SugaredLogger.Panicf(msg, v...)
}
func (z *zapLog) Fatal(v ...interface{}) {
z.SugaredLogger.Fatal(v...)
}
func (z *zapLog) Fatalf(msg string, v ...interface{}) {
z.SugaredLogger.Fatalf(msg, v...)
}
func ParseZapLevel(text string) zapcore.Level {
l := zapcore.InfoLevel
switch strings.TrimSpace(text) {
case "debug", "DEBUG":
l = zapcore.DebugLevel
case "info", "INFO", "": // make the zero value useful
l = zapcore.InfoLevel
case "warn", "warning", "WARN":
l = zapcore.WarnLevel
case "error", "ERROR":
l = zapcore.ErrorLevel
case "panic", "PANIC":
l = zapcore.PanicLevel
case "fatal", "FATAL":
l = zapcore.FatalLevel
}
return l
}