Skip to content

Commit 435f612

Browse files
Zap levels added, and custom log levels added
1 parent 334ea25 commit 435f612

File tree

3 files changed

+42
-23
lines changed

3 files changed

+42
-23
lines changed

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,6 @@ go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qL
319319
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
320320
go.uber.org/atomic v1.3.2 h1:2Oa65PReHzfn29GpvgsYwloV9AVFHPDk8tYxt2c2tr4=
321321
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
322-
go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU=
323-
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
324322
go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=
325323
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
326324
go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM=

pkg/log/zap/flags.go

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
Copyright 2019 The Kubernetes Authors.
2+
Copyright 2020 The Kubernetes Authors.
33
44
Licensed under the Apache License, Version 2.0 (the "License");
55
you may not use this file except in compliance with the License.
@@ -16,20 +16,18 @@ limitations under the License.
1616

1717
// Package zap contains helpers for setting up a new logr.Logger instance
1818
// using the Zap logging framework.
19-
2019
package zap
2120

2221
import (
2322
"fmt"
23+
"strconv"
2424
"strings"
2525

2626
"github.com/spf13/pflag"
2727
"go.uber.org/zap"
2828
"go.uber.org/zap/zapcore"
2929
)
3030

31-
type encoderConfigFunc func(*zapcore.EncoderConfig)
32-
3331
type encoderFlag struct {
3432
setFunc func(zapcore.Encoder)
3533
value string
@@ -59,19 +57,13 @@ func (ev *encoderFlag) Set(flagValue string) error {
5957
return nil
6058
}
6159

62-
func newJSONEncoder(ecfs ...encoderConfigFunc) zapcore.Encoder {
60+
func newJSONEncoder() zapcore.Encoder {
6361
encoderConfig := zap.NewProductionEncoderConfig()
64-
for _, f := range ecfs {
65-
f(&encoderConfig)
66-
}
6762
return zapcore.NewJSONEncoder(encoderConfig)
6863
}
6964

70-
func newConsoleEncoder(ecfs ...encoderConfigFunc) zapcore.Encoder {
65+
func newConsoleEncoder() zapcore.Encoder {
7166
encoderConfig := zap.NewDevelopmentEncoderConfig()
72-
for _, f := range ecfs {
73-
f(&encoderConfig)
74-
}
7567
return zapcore.NewConsoleEncoder(encoderConfig)
7668
}
7769

@@ -84,16 +76,31 @@ var _ pflag.Value = &levelFlag{}
8476

8577
func (ev *levelFlag) Set(flagValue string) error {
8678
lower := strings.ToLower(flagValue)
79+
var lvl int
8780
switch lower {
88-
case "debug":
81+
case "debug", "-1":
8982
ev.setFunc(zap.NewAtomicLevelAt(zap.DebugLevel))
90-
case "info":
83+
case "info", "0":
9184
ev.setFunc(zap.NewAtomicLevelAt(zap.InfoLevel))
85+
case "error", "2":
86+
ev.setFunc(zap.NewAtomicLevelAt(zap.ErrorLevel))
9287
default:
93-
return fmt.Errorf("invalid log level \"%s\"", flagValue)
88+
i, err := strconv.Atoi(lower)
89+
if err != nil {
90+
return fmt.Errorf("invalid log level \"%s\"", flagValue)
91+
}
92+
if i > 0 {
93+
fmt.Println("Iam here")
94+
lvl = -1 * i
95+
ev.setFunc(zap.NewAtomicLevelAt(zapcore.Level(int8(lvl))))
96+
} else {
97+
return fmt.Errorf("invalid log level \"%s\"", flagValue)
98+
}
9499
}
100+
95101
ev.value = flagValue
96102
return nil
103+
97104
}
98105

99106
func (ev *levelFlag) String() string {
@@ -109,11 +116,23 @@ type stackTraceFlag struct {
109116
value string
110117
}
111118

119+
var _ pflag.Value = &stackTraceFlag{}
120+
112121
func (ev *stackTraceFlag) Set(flagValue string) error {
113122
lower := strings.ToLower(flagValue)
114123
switch lower {
124+
case "debug":
125+
ev.setFunc(zap.NewAtomicLevelAt(zap.DebugLevel))
126+
case "info":
127+
ev.setFunc(zap.NewAtomicLevelAt(zap.InfoLevel))
115128
case "warn":
116129
ev.setFunc(zap.NewAtomicLevelAt(zap.WarnLevel))
130+
case "dpanic":
131+
ev.setFunc(zap.NewAtomicLevelAt(zap.DPanicLevel))
132+
case "panic":
133+
ev.setFunc(zap.NewAtomicLevelAt(zap.PanicLevel))
134+
case "fatal":
135+
ev.setFunc(zap.NewAtomicLevelAt(zap.FatalLevel))
117136
case "error":
118137
ev.setFunc(zap.NewAtomicLevelAt(zap.ErrorLevel))
119138
default:

pkg/log/zap/zap.go

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

2121
import (
22+
"flag"
2223
"io"
2324
"os"
2425
"time"
2526

2627
"github.com/go-logr/logr"
2728
"github.com/go-logr/zapr"
28-
"github.com/spf13/pflag"
2929
"go.uber.org/zap"
3030
"go.uber.org/zap/zapcore"
3131
)
@@ -210,9 +210,11 @@ func NewRaw(opts ...Opts) *zap.Logger {
210210
}
211211

212212
// BindToFlagSet func allows CLI passed flags to be parsed.
213-
func (o *Options) BindFlags(fs *pflag.FlagSet) {
213+
func (o *Options) BindFlags(fs *flag.FlagSet) {
214+
214215
// Set Development mode value
215-
fs.BoolVar(&o.Development, "zap-devel", false, "Enable zap development mode (changes defaults to console encoder, debug log level, and disables sampling)")
216+
fs.BoolVar(&o.Development, "zap-devel", false, "Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn)."+
217+
"If Development Mode is not set, defaults apply(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error)")
216218

217219
// Set Encoder value
218220
var encVal encoderFlag
@@ -226,15 +228,15 @@ func (o *Options) BindFlags(fs *pflag.FlagSet) {
226228
levelVal.setFunc = func(fromFlag zap.AtomicLevel) {
227229
o.Level = &fromFlag
228230
}
229-
fs.Var(&levelVal, "zap-log-level", "Zap log level (one of 'debug', 'info', 'error' or any integer value > 0)")
231+
fs.Var(&levelVal, "zap-log-level", "Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error',"+
232+
"or any integer value > 0 which corresponds to custom debug levels of increasing verbosity")
230233

231234
// Set the StrackTrace Level
232235
var stackVal stackTraceFlag
233236
stackVal.setFunc = func(fromFlag zap.AtomicLevel) {
234237
o.StacktraceLevel = &fromFlag
235238
}
236-
fs.Var(&stackVal, "zap-stacktrace-level", "Zap log level (one of 'warn', 'error'")
237-
239+
fs.Var(&stackVal, "zap-stacktrace-level", "Zap Level at and above which stacktraces are captured (one of 'warn' or 'error'")
238240
}
239241

240242
// UseFlagOptions to set logger with CLI passed flags.

0 commit comments

Comments
 (0)