all, lib/logger: Refactor SetDebug calls (#6054)

This commit is contained in:
Lukas Lihotzki
2019-10-04 13:03:34 +02:00
committed by Simon Frei
parent 8fb576ed54
commit 96bb1c8e29
27 changed files with 16 additions and 176 deletions

View File

@@ -50,6 +50,7 @@ type Logger interface {
Warnf(format string, vals ...interface{})
ShouldDebug(facility string) bool
SetDebug(facility string, enabled bool)
IsTraced(facility string) bool
Facilities() map[string]string
FacilityDebugging() []string
NewFacility(facility, description string) Logger
@@ -60,6 +61,7 @@ type logger struct {
handlers [NumLevels][]MessageHandler
facilities map[string]string // facility name => description
debug map[string]struct{} // only facility names with debugging enabled
traces string
mut sync.Mutex
}
@@ -78,6 +80,7 @@ func New() Logger {
func newLogger(w io.Writer) Logger {
return &logger{
logger: log.New(w, "", DefaultFlags),
traces: os.Getenv("STTRACE"),
facilities: make(map[string]string),
debug: make(map[string]struct{}),
}
@@ -210,6 +213,11 @@ func (l *logger) SetDebug(facility string, enabled bool) {
}
}
// IsTraced returns whether the facility name is contained in STTRACE.
func (l *logger) IsTraced(facility string) bool {
return strings.Contains(l.traces, facility) || l.traces == "all"
}
// FacilityDebugging returns the set of facilities that have debugging
// enabled.
func (l *logger) FacilityDebugging() []string {
@@ -236,6 +244,8 @@ func (l *logger) Facilities() map[string]string {
// NewFacility returns a new logger bound to the named facility.
func (l *logger) NewFacility(facility, description string) Logger {
l.SetDebug(facility, l.IsTraced(facility))
l.mut.Lock()
l.facilities[facility] = description
l.mut.Unlock()