This repository has been archived by the owner on Jun 3, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
config.go
169 lines (146 loc) · 4.13 KB
/
config.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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
package rz
import (
"io"
"os"
"time"
)
// LoggerOption is used to configure a logger.
type LoggerOption func(logger *Logger)
// Writer update logger's writer.
func Writer(writer io.Writer) LoggerOption {
return func(logger *Logger) {
if writer == nil {
writer = os.Stdout
}
lw, ok := writer.(LevelWriter)
if !ok {
lw = levelWriterAdapter{writer}
}
logger.writer = lw
}
}
// Level update logger's level.
func Level(lvl LogLevel) LoggerOption {
return func(logger *Logger) {
logger.level = lvl
}
}
// Sampler update logger's sampler.
func Sampler(sampler LogSampler) LoggerOption {
return func(logger *Logger) {
logger.sampler = sampler
}
}
// AddHook appends hook to logger's hook
func AddHook(hook LogHook) LoggerOption {
return func(logger *Logger) {
logger.hooks = append(logger.hooks, hook)
}
}
// Hooks replaces logger's hooks
func Hooks(hooks ...LogHook) LoggerOption {
return func(logger *Logger) {
logger.hooks = hooks
}
}
// Fields update logger's context fields
func Fields(fields ...Field) LoggerOption {
return func(logger *Logger) {
e := newEvent(logger.writer, logger.level)
e.buf = nil
copyInternalLoggerFieldsToEvent(logger, e)
for i := range fields {
fields[i](e)
}
if e.stack != logger.stack {
logger.stack = e.stack
}
if e.caller != logger.caller {
logger.caller = e.caller
}
if e.timestamp != logger.timestamp {
logger.timestamp = e.timestamp
}
if e.buf != nil {
logger.context = enc.AppendObjectData(logger.context, e.buf)
}
}
}
// Formatter update logger's formatter.
func Formatter(formatter LogFormatter) LoggerOption {
return func(logger *Logger) {
logger.formatter = formatter
}
}
// TimestampFieldName update logger's timestampFieldName.
func TimestampFieldName(timestampFieldName string) LoggerOption {
return func(logger *Logger) {
logger.timestampFieldName = timestampFieldName
}
}
// LevelFieldName update logger's levelFieldName.
func LevelFieldName(levelFieldName string) LoggerOption {
return func(logger *Logger) {
logger.levelFieldName = levelFieldName
}
}
// MessageFieldName update logger's messageFieldName.
func MessageFieldName(messageFieldName string) LoggerOption {
return func(logger *Logger) {
logger.messageFieldName = messageFieldName
}
}
// ErrorFieldName update logger's errorFieldName.
func ErrorFieldName(errorFieldName string) LoggerOption {
return func(logger *Logger) {
logger.errorFieldName = errorFieldName
}
}
// CallerFieldName update logger's callerFieldName.
func CallerFieldName(callerFieldName string) LoggerOption {
return func(logger *Logger) {
logger.callerFieldName = callerFieldName
}
}
// CallerSkipFrameCount update logger's callerSkipFrameCount.
func CallerSkipFrameCount(callerSkipFrameCount int) LoggerOption {
return func(logger *Logger) {
logger.callerSkipFrameCount = callerSkipFrameCount
}
}
// ErrorStackFieldName update logger's errorStackFieldName.
func ErrorStackFieldName(errorStackFieldName string) LoggerOption {
return func(logger *Logger) {
logger.errorStackFieldName = errorStackFieldName
}
}
// TimeFieldFormat update logger's timeFieldFormat.
func TimeFieldFormat(timeFieldFormat string) LoggerOption {
return func(logger *Logger) {
logger.timeFieldFormat = timeFieldFormat
}
}
// TimestampFunc update logger's timestampFunc.
func TimestampFunc(timestampFunc func() time.Time) LoggerOption {
return func(logger *Logger) {
logger.timestampFunc = timestampFunc
}
}
var (
// DurationFieldUnit defines the unit for time.Duration type fields added
// using the Duration method.
DurationFieldUnit = time.Millisecond
// DurationFieldInteger renders Dur fields as integer instead of float if
// set to true.
DurationFieldInteger = false
// ErrorHandler is called whenever rz fails to write an event on its
// output. If not set, an error is printed on the stderr. This handler must
// be thread safe and non-blocking.
ErrorHandler func(err error)
// ErrorStackMarshaler extract the stack from err if any.
ErrorStackMarshaler func(err error) interface{}
// ErrorMarshalFunc allows customization of global error marshaling
ErrorMarshalFunc = func(err error) interface{} {
return err
}
)