/
option.go
47 lines (36 loc) · 1.08 KB
/
option.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
package logger
import "go.uber.org/zap/zapcore"
type Option struct {
// 日志级别:debug: -1 info:0 warn: 1 error: 2 dpanic: 3 panic: 4 fatal: 5
Level int8 `json:"level" yaml:"level"`
// 日志目录,path为空表示使用日志输出到控制台
Path string `json:"path" yaml:"path"`
// 定时检测文件时间间隔,单位秒,配置小于0的值表示禁用,默认5秒
TickSecond int32 `json:"tickSecond" yaml:"tickSecond"`
// 日志文件最长保留时间,单位天,配置小于0表示永久保留,默认7天
MaxDays int `json:"maxDays" yaml:"maxDays"`
encoder zapcore.Encoder
flagFunc func() string
}
func loadOption(o Option) *Option {
if o.encoder == nil {
o.encoder = defaultEncoder
}
if o.flagFunc == nil {
o.flagFunc = timeFlag
}
if o.TickSecond == 0 {
o.TickSecond = defaultTickSecond
}
if o.MaxDays == 0 {
o.MaxDays = defaultMaxDays
}
return &o
}
type Options func(o *Option)
func (opt *Option) WithEncoder(encoder zapcore.Encoder) {
opt.encoder = encoder
}
func (opt *Option) WithFlagFunc(flag func() string) {
opt.flagFunc = flag
}