-
Notifications
You must be signed in to change notification settings - Fork 378
/
logger_native.go
65 lines (50 loc) · 1.36 KB
/
logger_native.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
package logutil
import (
"fmt"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type nativeCore struct {
subsystem string
enc zapcore.Encoder
}
func NewNativeDriverCore(subsystem string, enc zapcore.Encoder) zapcore.Core {
return &nativeCore{subsystem: subsystem, enc: enc}
}
func (nc *nativeCore) Enabled(level zapcore.Level) bool {
return true
}
func (nc *nativeCore) With(fields []zapcore.Field) zapcore.Core {
return &nativeCore{enc: nc.enc}
}
func (nc *nativeCore) Check(entry zapcore.Entry, checked *zapcore.CheckedEntry) *zapcore.CheckedEntry {
return checked.AddCore(entry, nc)
}
func (nc *nativeCore) Write(entry zapcore.Entry, fields []zapcore.Field) error {
buff, err := nc.enc.EncodeEntry(entry, fields)
if err != nil {
return err
}
NativeLog(
entry.Level,
fmt.Sprintf("%s.%s", nc.subsystem, entry.LoggerName),
buff.String(),
)
return nil
}
func (nc *nativeCore) Sync() error {
return nil
}
func NewNativeLogger(subsystem string) *zap.Logger {
// native logger
nativeEncoderConfig := zap.NewDevelopmentEncoderConfig()
nativeEncoderConfig.LevelKey = ""
nativeEncoderConfig.TimeKey = ""
nativeEncoderConfig.NameKey = ""
nativeEncoderConfig.CallerKey = ""
nativeEncoder := zapcore.NewConsoleEncoder(nativeEncoderConfig)
core := NewNativeDriverCore(subsystem, nativeEncoder)
// create logger
logger := zap.New(core)
return logger
}