~craftyguy/logger

55b2d6fa41ecd267b39ff2434dab4cf7e3e55598 — Clayton Craft 10 months ago f08fb06
logger: store level locally in obj

Allows quickly reading the current level without more function calls.
A map is used to map (heh..) the loglevel to an integer that can be
compared directly to the print's "level".
1 files changed, 13 insertions(+), 3 deletions(-)

M logger.go
M logger.go => logger.go +13 -3
@@ 15,9 15,10 @@ import (
)

type Logger struct {
	log     *stdLog.Logger
	filter  *logutils.LevelFilter
	noColor bool
	log      *stdLog.Logger
	filter   *logutils.LevelFilter
	noColor  bool
	minlevel int
	sync.RWMutex
}



@@ 28,6 29,14 @@ const (
	WARN  logutils.LogLevel = "WARN"
)

// Note: order here matters!
var levels = map[logutils.LogLevel]int{
	DEBUG: 0,
	INFO:  1,
	WARN:  2,
	ERROR: 3,
}

var logger *Logger

// Initialize a new logger writing the given io.Writer. This is a singleton, so


@@ 67,6 76,7 @@ func Get() *Logger {
func (l *Logger) SetMinLevel(level logutils.LogLevel) {
	l.Lock()
	defer l.Unlock()
	l.minlevel = levels[level]
	l.filter.SetMinLevel(level)
}