-
Notifications
You must be signed in to change notification settings - Fork 0
/
logs.go
69 lines (52 loc) · 1.36 KB
/
logs.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
package logs
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type LoggerInit func(logLevel string, encoding Encoding, options ...zap.Option) (*zap.Logger, error)
type Encoding string
const (
Console Encoding = "console"
JSON Encoding = "json"
Default Encoding = JSON
)
const (
DefaultLogLevel = "warn"
)
func NewEncoderConfig(encoding Encoding) zapcore.EncoderConfig {
encoderCfg := zapcore.EncoderConfig{
MessageKey: "message",
LevelKey: "level",
EncodeLevel: zapcore.LowercaseLevelEncoder,
}
if encoding != Console {
encoderCfg.TimeKey = "time"
encoderCfg.EncodeTime = zapcore.ISO8601TimeEncoder
encoderCfg.CallerKey = "caller"
encoderCfg.EncodeCaller = zapcore.ShortCallerEncoder
}
return encoderCfg
}
func NewLoggerConfig(logLevel string, encoding Encoding) (*zap.Config, error) {
level, err := NewLevel(logLevel)
if err != nil {
return nil, err
}
if encoding != Console && encoding != JSON {
// transparently convert unknown encodings to default value
encoding = Default
}
encoderCfg := NewEncoderConfig(encoding)
cfg := &zap.Config{
Level: zap.NewAtomicLevelAt(level),
Encoding: string(encoding),
EncoderConfig: encoderCfg,
DisableStacktrace: false,
}
return cfg, nil
}
func NewLevel(level string) (zapcore.Level, error) {
var l zapcore.Level
err := l.Set(level)
return l, err
}