Skip to content

Commit 60c37da

Browse files
authored
Merge pull request #47 from moul/dev/moul/check-level
2 parents c247484 + 936a1af commit 60c37da

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ func CheckAnyLevel(logger *zap.Logger) bool
7070
CheckAnyLevel determines whether at least one log level isn't filtered-out
7171
by the logger.
7272
73+
func CheckLevel(logger *zap.Logger, level zapcore.Level) bool
74+
CheckLevel determines whether a specific log level would produce log or not.
75+
7376
func NewFilteringCore(next zapcore.Core, filter FilterFunc) zapcore.Core
7477
NewFilteringCore returns a core middleware that uses the given filter
7578
function to determine whether to actually call Write on the next core in the

zapfilter.go

+5
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ func CheckAnyLevel(logger *zap.Logger) bool {
3535
return false
3636
}
3737

38+
// CheckLevel determines whether a specific log level would produce log or not.
39+
func CheckLevel(logger *zap.Logger, level zapcore.Level) bool {
40+
return logger.Check(level, "") != nil
41+
}
42+
3843
type filteringCore struct {
3944
next zapcore.Core
4045
filter FilterFunc

zapfilter_test.go

+31
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,37 @@ func ExampleCheckAnyLevel() {
436436
// true
437437
}
438438

439+
func ExampleCheckLevel() {
440+
c := zap.NewExample().Core()
441+
logger := zap.New(zapfilter.NewFilteringCore(c, zapfilter.MustParseRules("debug:*.* info:demo*")))
442+
443+
fmt.Println(zapfilter.CheckLevel(logger, zap.DebugLevel))
444+
fmt.Println(zapfilter.CheckLevel(logger.Named("demo"), zap.DebugLevel))
445+
fmt.Println(zapfilter.CheckLevel(logger.Named("blahdemo"), zap.DebugLevel))
446+
fmt.Println(zapfilter.CheckLevel(logger.Named("demoblah"), zap.DebugLevel))
447+
fmt.Println(zapfilter.CheckLevel(logger.Named("blah"), zap.DebugLevel))
448+
fmt.Println(zapfilter.CheckLevel(logger.Named("blah.blah"), zap.DebugLevel))
449+
fmt.Println(zapfilter.CheckLevel(logger, zap.InfoLevel))
450+
fmt.Println(zapfilter.CheckLevel(logger.Named("demo"), zap.InfoLevel))
451+
fmt.Println(zapfilter.CheckLevel(logger.Named("blahdemo"), zap.InfoLevel))
452+
fmt.Println(zapfilter.CheckLevel(logger.Named("demoblah"), zap.InfoLevel))
453+
fmt.Println(zapfilter.CheckLevel(logger.Named("blah"), zap.InfoLevel))
454+
fmt.Println(zapfilter.CheckLevel(logger.Named("blah.blah"), zap.InfoLevel))
455+
// Output:
456+
// false
457+
// false
458+
// false
459+
// false
460+
// false
461+
// true
462+
// false
463+
// true
464+
// false
465+
// true
466+
// false
467+
// false
468+
}
469+
439470
func Example_with() {
440471
core := zap.NewExample().Core()
441472
logger := zap.New(zapfilter.NewFilteringCore(core, zapfilter.ByNamespaces("demo1.*,demo3.*")))

0 commit comments

Comments
 (0)