1. refactor kubesphere dependency service client creation, we can disable dependency by config 2. dependencies can be configured by configuration file 3. refactor cmd package using cobra.Command, so we can use hypersphere to invoke command sepearately. Later we only need to build one image to contains all kubesphere core components. One command to rule them all! 4. live reloading configuration currently not implemented
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
// 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()
|
|
}
|
|
}
|