summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mattermost/logr/levelcustom.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/mattermost/logr/levelcustom.go')
-rw-r--r--vendor/github.com/mattermost/logr/levelcustom.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/vendor/github.com/mattermost/logr/levelcustom.go b/vendor/github.com/mattermost/logr/levelcustom.go
new file mode 100644
index 00000000..384fe4e9
--- /dev/null
+++ b/vendor/github.com/mattermost/logr/levelcustom.go
@@ -0,0 +1,45 @@
+package logr
+
+import (
+ "sync"
+)
+
+// CustomFilter allows targets to enable logging via a list of levels.
+type CustomFilter struct {
+ mux sync.RWMutex
+ levels map[LevelID]Level
+}
+
+// IsEnabled returns true if the specified Level exists in this list.
+func (st *CustomFilter) IsEnabled(level Level) bool {
+ st.mux.RLock()
+ defer st.mux.RUnlock()
+ _, ok := st.levels[level.ID]
+ return ok
+}
+
+// IsStacktraceEnabled returns true if the specified Level requires a stack trace.
+func (st *CustomFilter) IsStacktraceEnabled(level Level) bool {
+ st.mux.RLock()
+ defer st.mux.RUnlock()
+ lvl, ok := st.levels[level.ID]
+ if ok {
+ return lvl.Stacktrace
+ }
+ return false
+}
+
+// Add adds one or more levels to the list. Adding a level enables logging for
+// that level on any targets using this CustomFilter.
+func (st *CustomFilter) Add(levels ...Level) {
+ st.mux.Lock()
+ defer st.mux.Unlock()
+
+ if st.levels == nil {
+ st.levels = make(map[LevelID]Level)
+ }
+
+ for _, s := range levels {
+ st.levels[s.ID] = s
+ }
+}