-
Notifications
You must be signed in to change notification settings - Fork 0
/
logger.go
92 lines (71 loc) · 1.91 KB
/
logger.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
package logger
import (
"log"
"go.uber.org/zap"
)
var inst *Logger
type Logger struct {
zapper *zap.Logger
common []zap.Field
}
func I() *Logger {
return inst
}
func Instance(options ...Option) *Logger {
return instanceWithConfig(zap.NewProductionConfig(), options...)
}
func DevelopmentInstance(options ...Option) *Logger {
return instanceWithConfig(zap.NewDevelopmentConfig(), options...)
}
func instanceWithConfig(cfg zap.Config, options ...Option) *Logger {
// Configure with options
for _, opt := range options {
opt(&cfg)
}
zapper, err := cfg.Build()
if err != nil {
log.Println("Unable to create logger", err)
}
return &Logger{zapper: zapper.WithOptions(zap.AddCallerSkip(1))}
}
func Init(logger *Logger) {
inst = logger
}
func (l *Logger) Clone() *Logger {
newLog := *l
return &newLog
}
func (l *Logger) AddCommon(fields ...zap.Field) {
l.common = append(l.common, fields...)
}
func (l *Logger) withCommon(fields ...zap.Field) []zap.Field {
return append(l.common, fields...)
}
func (l *Logger) Debug(msg string, fields ...zap.Field) {
l.zapper.Debug(msg, l.withCommon(fields...)...)
}
func (l *Logger) Info(msg string, fields ...zap.Field) {
l.zapper.Info(msg, l.withCommon(fields...)...)
}
func (l *Logger) Warn(msg string, fields ...zap.Field) {
l.zapper.Warn(msg, l.withCommon(fields...)...)
}
func (l *Logger) Error(msg string, fields ...zap.Field) {
l.zapper.Error(msg, l.withCommon(fields...)...)
}
func (l *Logger) ErrorIf(err error, msg string, fields ...zap.Field) {
if err != nil {
l.zapper.Error(msg, l.withCommon(append(fields, zap.Error(err))...)...)
}
}
func (l *Logger) Fatal(msg string, fields ...zap.Field) {
l.zapper.Fatal(msg, l.withCommon(fields...)...)
}
func (l *Logger) FatalIf(err error, msg string, fields ...zap.Field) {
if err != nil {
l.zapper.Fatal(msg, l.withCommon(append(fields, zap.Error(err))...)...)
}
}
func (l *Logger) Sync() {
_ = l.zapper.Sync()
}