15
15
package zap
16
16
17
17
import (
18
- "flag"
19
18
"fmt"
20
- "strconv"
21
19
"strings"
22
20
23
21
"go.uber.org/zap"
24
22
"go.uber.org/zap/zapcore"
25
- "k8s.io/klog"
26
23
)
27
24
28
25
type encoderConfigFunc func (* zapcore.EncoderConfig )
@@ -33,17 +30,6 @@ type encoderValue struct {
33
30
str string
34
31
}
35
32
36
- func (v * encoderValue ) Set (e string ) error {
37
- v .set = true
38
- if e == "json" || e == "console" {
39
- v .newEncoder = newEncoder (e )
40
- } else {
41
- return fmt .Errorf ("unknown encoder \" %s\" " , e )
42
- }
43
- v .str = e
44
- return nil
45
- }
46
-
47
33
func (v encoderValue ) String () string {
48
34
return v .str
49
35
}
@@ -52,23 +38,39 @@ func (v encoderValue) Type() string {
52
38
return "encoder"
53
39
}
54
40
55
- func newEncoder (e string , ecfs ... encoderConfigFunc ) zapcore.Encoder {
56
- if e == "json" {
57
- encoderConfig := zap .NewProductionEncoderConfig ()
58
- for _ , f := range ecfs {
59
- f (& encoderConfig )
60
- }
61
- fmt .Println ("HERE WITH JSON" )
62
- return zapcore .NewJSONEncoder (encoderConfig )
63
- } else {
64
- encoderConfig := zap .NewDevelopmentEncoderConfig ()
65
- for _ , f := range ecfs {
66
- f (& encoderConfig )
67
- }
68
- fmt .Println ("HERE WITH CONSOLE" )
69
- return zapcore .NewConsoleEncoder (encoderConfig )
41
+ func (v * encoderValue ) Set (e string ) error {
42
+ v .set = true
43
+ val := strings .ToLower (e )
44
+ switch val {
45
+ case "json" :
46
+ v .newEncoder = newJSONEncoder ()
47
+ fmt .Printf ("got JSON : %p \n " , v .newEncoder )
48
+
49
+ case "console" :
50
+ v .newEncoder = newConsoleEncoder ()
51
+ fmt .Printf ("got CONSOLE : %p \n " , v .newEncoder )
52
+
53
+ default :
54
+ return fmt .Errorf ("invalid encoder value \" %s\" " , e )
70
55
}
56
+ v .str = e
57
+ return nil
58
+ }
71
59
60
+ func newJSONEncoder (ecfs ... encoderConfigFunc ) zapcore.Encoder {
61
+ encoderConfig := zap .NewProductionEncoderConfig ()
62
+ for _ , f := range ecfs {
63
+ f (& encoderConfig )
64
+ }
65
+ return zapcore .NewJSONEncoder (encoderConfig )
66
+ }
67
+
68
+ func newConsoleEncoder (ecfs ... encoderConfigFunc ) zapcore.Encoder {
69
+ encoderConfig := zap .NewDevelopmentEncoderConfig ()
70
+ for _ , f := range ecfs {
71
+ f (& encoderConfig )
72
+ }
73
+ return zapcore .NewConsoleEncoder (encoderConfig )
72
74
}
73
75
74
76
type levelValue struct {
@@ -79,36 +81,19 @@ type levelValue struct {
79
81
func (v * levelValue ) Set (l string ) error {
80
82
v .set = true
81
83
lower := strings .ToLower (l )
82
- var lvl int
84
+ var lvl zap. AtomicLevel
83
85
switch lower {
84
86
case "debug" :
85
- lvl = - 1
87
+ lvl = zap . NewAtomicLevelAt ( zap . DebugLevel )
86
88
case "info" :
87
- lvl = 0
88
- case "error" :
89
- lvl = 2
89
+ lvl = zap .NewAtomicLevelAt (zap .InfoLevel )
90
90
default :
91
- i , err := strconv .Atoi (lower )
92
- if err != nil {
93
- return fmt .Errorf ("invalid log level \" %s\" " , l )
94
- }
95
-
96
- if i > 0 {
97
- lvl = - 1 * i
98
- } else {
99
- return fmt .Errorf ("NO LIKEY log level \" %s\" " , l )
100
- }
101
- }
102
- v .level .SetLevel (zapcore .Level (int8 (lvl )))
103
- // If log level is greater than debug, set glog/klog level to that level.
104
- if lvl < - 3 {
105
- fs := flag .NewFlagSet ("" , flag .ContinueOnError )
106
- klog .InitFlags (fs )
107
- err := fs .Set ("v" , fmt .Sprintf ("%v" , - 1 * lvl ))
108
- if err != nil {
109
- return err
110
- }
91
+ return fmt .Errorf ("invalid log level \" %s\" " , l )
111
92
}
93
+ //v.level.SetLevel(zapcore.Level(int8(lvl)))
94
+ v .level = lvl
95
+ fmt .Println ("*******" , v .level )
96
+
112
97
return nil
113
98
}
114
99
@@ -119,3 +104,32 @@ func (v levelValue) String() string {
119
104
func (v levelValue ) Type () string {
120
105
return "level"
121
106
}
107
+
108
+ type stackTraceValue struct {
109
+ set bool
110
+ lv zap.AtomicLevel
111
+ }
112
+
113
+ func (s * stackTraceValue ) Set (val string ) error {
114
+ s .set = true
115
+ lower := strings .ToLower (val )
116
+ //var lv1 zap.AtomicLevel
117
+ switch lower {
118
+ case "warn" :
119
+ s .lv = zap .NewAtomicLevelAt (zap .WarnLevel )
120
+ case "error" :
121
+ s .lv = zap .NewAtomicLevelAt (zap .ErrorLevel )
122
+ default :
123
+ return fmt .Errorf ("invalid stacktrace level \" %s\" " , val )
124
+ }
125
+ //s.lv = lv1
126
+ return nil
127
+ }
128
+
129
+ func (s stackTraceValue ) String () string {
130
+ return s .lv .String ()
131
+ }
132
+
133
+ func (_ stackTraceValue ) Type () string {
134
+ return "lv"
135
+ }
0 commit comments