@@ -23,38 +23,39 @@ import (
23
23
"fmt"
24
24
"strings"
25
25
26
+ "github.com/spf13/pflag"
26
27
"go.uber.org/zap"
27
28
"go.uber.org/zap/zapcore"
28
29
)
29
30
30
31
type encoderConfigFunc func (* zapcore.EncoderConfig )
31
32
32
- type encoderValue struct {
33
- set bool
33
+ type encoderFlag struct {
34
34
setFunc func (zapcore.Encoder )
35
- str string
35
+ value string
36
36
}
37
37
38
- func (v encoderValue ) String () string {
39
- return v .str
38
+ var _ pflag.Value = & encoderFlag {}
39
+
40
+ func (ev * encoderFlag ) String () string {
41
+ return ev .value
40
42
}
41
43
42
- func (v encoderValue ) Type () string {
44
+ func (ev * encoderFlag ) Type () string {
43
45
return "encoder"
44
46
}
45
47
46
- func (v * encoderValue ) Set (e string ) error {
47
- v .set = true
48
- val := strings .ToLower (e )
48
+ func (ev * encoderFlag ) Set (flagValue string ) error {
49
+ val := strings .ToLower (flagValue )
49
50
switch val {
50
51
case "json" :
51
- v .setFunc (newJSONEncoder ())
52
+ ev .setFunc (newJSONEncoder ())
52
53
case "console" :
53
- v .setFunc (newConsoleEncoder ())
54
+ ev .setFunc (newConsoleEncoder ())
54
55
default :
55
- return fmt .Errorf ("invalid encoder value \" %s\" " , e )
56
+ return fmt .Errorf ("invalid encoder value \" %s\" " , flagValue )
56
57
}
57
- v . str = e
58
+ ev . value = flagValue
58
59
return nil
59
60
}
60
61
@@ -74,59 +75,58 @@ func newConsoleEncoder(ecfs ...encoderConfigFunc) zapcore.Encoder {
74
75
return zapcore .NewConsoleEncoder (encoderConfig )
75
76
}
76
77
77
- type levelValue struct {
78
- set bool
78
+ type levelFlag struct {
79
79
setFunc func (zap.AtomicLevel )
80
- str string
80
+ value string
81
81
}
82
82
83
- func (v * levelValue ) Set (l string ) error {
84
- v .set = true
85
- lower := strings .ToLower (l )
83
+ var _ pflag.Value = & levelFlag {}
84
+
85
+ func (ev * levelFlag ) Set (flagValue string ) error {
86
+ lower := strings .ToLower (flagValue )
86
87
switch lower {
87
88
case "debug" :
88
- v .setFunc (zap .NewAtomicLevelAt (zap .DebugLevel ))
89
+ ev .setFunc (zap .NewAtomicLevelAt (zap .DebugLevel ))
89
90
case "info" :
90
- v .setFunc (zap .NewAtomicLevelAt (zap .InfoLevel ))
91
+ ev .setFunc (zap .NewAtomicLevelAt (zap .InfoLevel ))
91
92
default :
92
- return fmt .Errorf ("invalid log level \" %s\" " , l )
93
+ return fmt .Errorf ("invalid log level \" %s\" " , flagValue )
93
94
}
94
- v . str = l
95
+ ev . value = flagValue
95
96
return nil
96
97
}
97
98
98
- func (v levelValue ) String () string {
99
- return v . str
99
+ func (ev * levelFlag ) String () string {
100
+ return ev . value
100
101
}
101
102
102
- func (v levelValue ) Type () string {
103
+ func (ev * levelFlag ) Type () string {
103
104
return "level"
104
105
}
105
106
106
- type stackTraceValue struct {
107
- set bool
107
+ type stackTraceFlag struct {
108
108
setFunc func (zap.AtomicLevel )
109
- str string
109
+ value string
110
110
}
111
111
112
- func (s * stackTraceValue ) Set (val string ) error {
113
- s .set = true
114
- lower := strings .ToLower (val )
112
+ func (ev * stackTraceFlag ) Set (flagValue string ) error {
113
+ lower := strings .ToLower (flagValue )
115
114
switch lower {
116
115
case "warn" :
117
- s .setFunc (zap .NewAtomicLevelAt (zap .WarnLevel ))
116
+ ev .setFunc (zap .NewAtomicLevelAt (zap .WarnLevel ))
118
117
case "error" :
119
- s .setFunc (zap .NewAtomicLevelAt (zap .ErrorLevel ))
118
+ ev .setFunc (zap .NewAtomicLevelAt (zap .ErrorLevel ))
120
119
default :
121
- return fmt .Errorf ("invalid stacktrace level \" %s\" " , val )
120
+ return fmt .Errorf ("invalid stacktrace level \" %s\" " , flagValue )
122
121
}
122
+ ev .value = flagValue
123
123
return nil
124
124
}
125
125
126
- func (s stackTraceValue ) String () string {
127
- return s . str
126
+ func (ev * stackTraceFlag ) String () string {
127
+ return ev . value
128
128
}
129
129
130
- func (_ stackTraceValue ) Type () string {
130
+ func (ev * stackTraceFlag ) Type () string {
131
131
return "level"
132
132
}
0 commit comments