OSDN Git Service

fix commands
[bytom/shuttle.git] / vendor / github.com / bytom / vendor / github.com / spf13 / jwalterweatherman / log_counter.go
diff --git a/vendor/github.com/bytom/vendor/github.com/spf13/jwalterweatherman/log_counter.go b/vendor/github.com/bytom/vendor/github.com/spf13/jwalterweatherman/log_counter.go
new file mode 100644 (file)
index 0000000..11423ac
--- /dev/null
@@ -0,0 +1,55 @@
+// Copyright © 2016 Steve Francia <spf@spf13.com>.
+//
+// Use of this source code is governed by an MIT-style
+// license that can be found in the LICENSE file.
+
+package jwalterweatherman
+
+import (
+       "sync/atomic"
+)
+
+type logCounter struct {
+       counter uint64
+}
+
+func (c *logCounter) incr() {
+       atomic.AddUint64(&c.counter, 1)
+}
+
+func (c *logCounter) resetCounter() {
+       atomic.StoreUint64(&c.counter, 0)
+}
+
+func (c *logCounter) getCount() uint64 {
+       return atomic.LoadUint64(&c.counter)
+}
+
+func (c *logCounter) Write(p []byte) (n int, err error) {
+       c.incr()
+       return len(p), nil
+}
+
+// LogCountForLevel returns the number of log invocations for a given threshold.
+func (n *Notepad) LogCountForLevel(l Threshold) uint64 {
+       return n.logCounters[l].getCount()
+}
+
+// LogCountForLevelsGreaterThanorEqualTo returns the number of log invocations
+// greater than or equal to a given threshold.
+func (n *Notepad) LogCountForLevelsGreaterThanorEqualTo(threshold Threshold) uint64 {
+       var cnt uint64
+
+       for i := int(threshold); i < len(n.logCounters); i++ {
+               cnt += n.LogCountForLevel(Threshold(i))
+       }
+
+       return cnt
+}
+
+// ResetLogCounters resets the invocation counters for all levels.
+func (n *Notepad) ResetLogCounters() {
+       for _, np := range n.logCounters {
+               np.resetCounter()
+       }
+}