summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/spf13/jwalterweatherman/log_counter.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/spf13/jwalterweatherman/log_counter.go')
-rw-r--r--vendor/github.com/spf13/jwalterweatherman/log_counter.go51
1 files changed, 21 insertions, 30 deletions
diff --git a/vendor/github.com/spf13/jwalterweatherman/log_counter.go b/vendor/github.com/spf13/jwalterweatherman/log_counter.go
index 11423ac4..41285f3d 100644
--- a/vendor/github.com/spf13/jwalterweatherman/log_counter.go
+++ b/vendor/github.com/spf13/jwalterweatherman/log_counter.go
@@ -6,50 +6,41 @@
package jwalterweatherman
import (
+ "io"
"sync/atomic"
)
-type logCounter struct {
- counter uint64
+// Counter is an io.Writer that increments a counter on Write.
+type Counter struct {
+ count uint64
}
-func (c *logCounter) incr() {
- atomic.AddUint64(&c.counter, 1)
+func (c *Counter) incr() {
+ atomic.AddUint64(&c.count, 1)
}
-func (c *logCounter) resetCounter() {
- atomic.StoreUint64(&c.counter, 0)
+// Reset resets the counter.
+func (c *Counter) Reset() {
+ atomic.StoreUint64(&c.count, 0)
}
-func (c *logCounter) getCount() uint64 {
- return atomic.LoadUint64(&c.counter)
+// Count returns the current count.
+func (c *Counter) Count() uint64 {
+ return atomic.LoadUint64(&c.count)
}
-func (c *logCounter) Write(p []byte) (n int, err error) {
+func (c *Counter) 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()
+// LogCounter creates a LogListener that counts log statements >= the given threshold.
+func LogCounter(counter *Counter, t1 Threshold) LogListener {
+ return func(t2 Threshold) io.Writer {
+ if t2 < t1 {
+ // Not interested in this threshold.
+ return nil
+ }
+ return counter
}
}