Skip to content

Commit c9a71ba

Browse files
stracktrace flag added - not working
1 parent 9ed6d0a commit c9a71ba

File tree

2 files changed

+90
-59
lines changed

2 files changed

+90
-59
lines changed

pkg/log/zap/flags.go

Lines changed: 68 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,11 @@
1515
package zap
1616

1717
import (
18-
"flag"
1918
"fmt"
20-
"strconv"
2119
"strings"
2220

2321
"go.uber.org/zap"
2422
"go.uber.org/zap/zapcore"
25-
"k8s.io/klog"
2623
)
2724

2825
type encoderConfigFunc func(*zapcore.EncoderConfig)
@@ -33,17 +30,6 @@ type encoderValue struct {
3330
str string
3431
}
3532

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-
4733
func (v encoderValue) String() string {
4834
return v.str
4935
}
@@ -52,23 +38,39 @@ func (v encoderValue) Type() string {
5238
return "encoder"
5339
}
5440

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)
7055
}
56+
v.str = e
57+
return nil
58+
}
7159

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)
7274
}
7375

7476
type levelValue struct {
@@ -79,36 +81,19 @@ type levelValue struct {
7981
func (v *levelValue) Set(l string) error {
8082
v.set = true
8183
lower := strings.ToLower(l)
82-
var lvl int
84+
var lvl zap.AtomicLevel
8385
switch lower {
8486
case "debug":
85-
lvl = -1
87+
lvl = zap.NewAtomicLevelAt(zap.DebugLevel)
8688
case "info":
87-
lvl = 0
88-
case "error":
89-
lvl = 2
89+
lvl = zap.NewAtomicLevelAt(zap.InfoLevel)
9090
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)
11192
}
93+
//v.level.SetLevel(zapcore.Level(int8(lvl)))
94+
v.level = lvl
95+
fmt.Println("*******", v.level)
96+
11297
return nil
11398
}
11499

@@ -119,3 +104,32 @@ func (v levelValue) String() string {
119104
func (v levelValue) Type() string {
120105
return "level"
121106
}
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+
}

pkg/log/zap/zap.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ limitations under the License.
1919
package zap
2020

2121
import (
22+
"fmt"
2223
"io"
2324
"os"
2425
"time"
@@ -211,20 +212,36 @@ func NewRaw(opts ...Opts) *zap.Logger {
211212

212213
// BindToFlagSet
213214
func (o *Options) BindFlags(fs *pflag.FlagSet) {
215+
// Set Development mode value
216+
fs.BoolVar(&o.Development, "zap-devel", false, "Enable zap development mode (changes defaults to console encoder, debug log level, and disables sampling)")
217+
214218
// Set Encoder value
215-
encval := encoderValue{newEncoder: o.Encoder}
216-
fs.Var(&encval, "encoder-value", "json||console")
217-
o.Encoder = encval.newEncoder
219+
var encVal encoderValue
220+
//encVal := encoderValue{newEncoder: o.Encoder}
221+
fs.Var(&encVal, "zap-encoder", "Zap log encoding ('json' or 'console')")
222+
o.Encoder = encVal.newEncoder
223+
fmt.Printf("got o.Encoder : %p \n", o.Encoder)
224+
fmt.Printf("got newEncoder : %p \n", encVal.newEncoder)
218225

219226
// Set the log level
220-
lv := levelValue{level: zap.NewAtomicLevel()}
221-
fs.Var(&lv, "log-level", "Log level")
227+
var lv levelValue
228+
//lv := levelValue{level: zap.NewAtomicLevel()}
229+
fs.Var(&lv, "zap-log-level", "Zap log level (one of 'debug', 'info', 'error' or any integer value > 0)")
222230
o.Level = &lv.level
231+
fmt.Println("LOG LEVEL IS : ", o.Level)
232+
233+
/* Set the log level
234+
stackVal := stackTraceValue{lv: zap.NewAtomicLevel()}
235+
fs.Var(&stackVal, "zap-stacktrace-level", "Zap log level (one of 'warn', 'error'")
236+
o.StacktraceLevel = &stackVal.lv
237+
fmt.Println("STACKTRACE VALUE IS :", o.StacktraceLevel)*/
238+
223239
}
224240

225241
func UseNewOptions(in *Options) func(o *Options) {
226242
return func(o *Options) {
227243
*o = *in
228244
o.addDefaults()
245+
fmt.Println("FINAL OPTS: ", o)
229246
}
230247
}

0 commit comments

Comments
 (0)