Skip to content

Commit 9e78e65

Browse files
authored
Merge pull request #1348 from croomes/stack-trace-levels
✨ Allow panic as an option to -zap-stacktrace-level"
2 parents 8144092 + 9b98559 commit 9e78e65

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

pkg/log/zap/flags.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,10 @@ var levelStrings = map[string]zapcore.Level{
3434
"error": zap.ErrorLevel,
3535
}
3636

37-
// TODO Add level to disable stacktraces.
38-
// https://github.com/kubernetes-sigs/controller-runtime/issues/1035
3937
var stackLevelStrings = map[string]zapcore.Level{
4038
"info": zap.InfoLevel,
4139
"error": zap.ErrorLevel,
40+
"panic": zap.PanicLevel,
4241
}
4342

4443
type encoderFlag struct {

pkg/log/zap/zap.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ func NewRaw(opts ...Opts) *zap.Logger {
238238
// zap-encoder: Zap log encoding (one of 'json' or 'console')
239239
// zap-log-level: Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error',
240240
// or any integer value > 0 which corresponds to custom debug levels of increasing verbosity")
241-
// zap-stacktrace-level: Zap Level at and above which stacktraces are captured (one of 'info' or 'error')
241+
// zap-stacktrace-level: Zap Level at and above which stacktraces are captured (one of 'info', 'error' or 'panic')
242242
func (o *Options) BindFlags(fs *flag.FlagSet) {
243243

244244
// Set Development mode value
@@ -268,7 +268,7 @@ func (o *Options) BindFlags(fs *flag.FlagSet) {
268268
o.StacktraceLevel = fromFlag
269269
}
270270
fs.Var(&stackVal, "zap-stacktrace-level",
271-
"Zap Level at and above which stacktraces are captured (one of 'info', 'error').")
271+
"Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic').")
272272
}
273273

274274
// UseFlagOptions configures the logger to use the Options set by parsing zap option flags from the CLI.

pkg/log/zap/zap_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,19 @@ var _ = Describe("Zap log level flag options setup", func() {
423423
Expect(out.StacktraceLevel.Enabled(zapcore.ErrorLevel)).To(BeTrue())
424424
})
425425

426+
It("Should output stacktrace at panic level, with development mode set to true.", func() {
427+
args := []string{"--zap-stacktrace-level=panic", "--zap-devel=true"}
428+
fromFlags.BindFlags(&fs)
429+
err := fs.Parse(args)
430+
Expect(err).ToNot(HaveOccurred())
431+
out := Options{}
432+
UseFlagOptions(&fromFlags)(&out)
433+
434+
Expect(out.StacktraceLevel.Enabled(zapcore.PanicLevel)).To(BeTrue())
435+
Expect(out.StacktraceLevel.Enabled(zapcore.ErrorLevel)).To(BeFalse())
436+
Expect(out.StacktraceLevel.Enabled(zapcore.InfoLevel)).To(BeFalse())
437+
})
438+
426439
})
427440

428441
Context("with only -zap-devel flag provided", func() {

0 commit comments

Comments
 (0)