/
zap_option.go
116 lines (100 loc) · 2.42 KB
/
zap_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
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package logger
import (
"go.uber.org/zap/zapcore"
)
// Option option for zapLogWriter
type Option func(z *zapLogWriter)
// apply add option for zapLogWriter
func (z *zapLogWriter) apply(opts ...Option) {
for _, o := range opts {
o(z)
}
}
// WithMaxAge 日志保留时间,单位day
func WithMaxAge(d int) Option {
return func(z *zapLogWriter) {
z.maxAge = d
}
}
// WithMaxSize 日志大小,单位MB
func WithMaxSize(size int) Option {
return func(z *zapLogWriter) {
z.maxSize = size
}
}
// WithCompress 日志是否压缩
func WithCompress(b bool) Option {
return func(z *zapLogWriter) {
z.compress = b
}
}
// WithAddCaller 是否输出文件名和行号
func WithAddCaller(b bool) Option {
return func(z *zapLogWriter) {
z.addCaller = b
}
}
/** WithCallerSkip 设置callerSkip
addCaller = true,并且 callerSkip > 0 会设置zap.AddCallerSkip
zap源码包中logger.go#260 check func
check must always be called directly by a method in the Logger interface
(e.g., Check, Info, Fatal).
const callerSkipOffset = 2
这里的callerSkipOffset默认是2
如果基于这个Logger包,再包装一次,这个 skip = 2,以此类推
否则 skip=1
*/
func WithCallerSkip(skip int) Option {
return func(z *zapLogWriter) {
z.callerSkip = skip
}
}
// WithLogLevel 日志级别,设置日志打印最低级别,如果不设置默认为info级别
// zap.InfoLevel is the default logging priority.
func WithLogLevel(level zapcore.Level) Option {
return func(z *zapLogWriter) {
z.logLevel = level
}
}
// WithWriteToFile 设置日志是否写入文件中
func WithWriteToFile(b bool) Option {
return func(z *zapLogWriter) {
z.logWriteToFile = b
}
}
// WithLogFilename 日志文件名
func WithLogFilename(filename string) Option {
return func(z *zapLogWriter) {
z.logFilename = filename
}
}
// WithLogDir 日志目录
func WithLogDir(dir string) Option {
return func(z *zapLogWriter) {
z.logDir = dir
}
}
// WithJsonFormat 是否json格式化
func WithJsonFormat(b bool) Option {
return func(z *zapLogWriter) {
z.jsonFormat = b
}
}
// WithStdout 是否输出到终端
func WithStdout(b bool) Option {
return func(z *zapLogWriter) {
z.stdout = b
}
}
// WithEnableColor 是否日志染色
func WithEnableColor(b bool) Option {
return func(z *zapLogWriter) {
z.enableColor = b
}
}
// WithHostname 自定义hostname
func WithHostname(hostname string) Option {
return func(z *zapLogWriter) {
z.hostname = hostname
}
}