/
zap.go
43 lines (34 loc) · 982 Bytes
/
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
package mocks
import (
"bytes"
"time"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
// MockLogger is logger wrapped for tests.
type MockLogger struct {
*zap.SugaredLogger
buf bytes.Buffer
}
func NewMockLogger() *MockLogger {
logger := &MockLogger{}
encoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{
TimeKey: "ts",
LevelKey: "level",
NameKey: "logger",
CallerKey: "caller",
MessageKey: "msg",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeTime: NoopTimeEncoder,
EncodeDuration: zapcore.SecondsDurationEncoder,
EncodeCaller: zapcore.ShortCallerEncoder,
})
logger.SugaredLogger = zap.New(zapcore.NewCore(encoder, zapcore.AddSync(&logger.buf), zapcore.DebugLevel)).Sugar()
return logger
}
func (m *MockLogger) String() string {
return m.buf.String()
}
func NoopTimeEncoder(time.Time, zapcore.PrimitiveArrayEncoder) {}