diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2016-01-28 16:00:03 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2016-01-28 17:33:41 +0300 |
commit | 3054a461850485bad3293907720f4c5a9d76cab0 (patch) | |
tree | d7a7735a81fc8c9707a6629fc514d4db6118c346 /helpers/general.go | |
parent | 3b3e771d613b3d8b9c54bc8b42e4bae7ba0bbb68 (diff) |
Make the DistinctErrorLogger more generic
Diffstat (limited to 'helpers/general.go')
-rw-r--r-- | helpers/general.go | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/helpers/general.go b/helpers/general.go index 333cbfa3c..3126bf5ca 100644 --- a/helpers/general.go +++ b/helpers/general.go @@ -181,15 +181,20 @@ func ThemeSet() bool { return viper.GetString("theme") != "" } -// DistinctErrorLogger ignores duplicate log statements. -type DistinctErrorLogger struct { +type logPrinter interface { + Println(a ...interface{}) +} + +// DistinctLogger ignores duplicate log statements. +type DistinctLogger struct { sync.RWMutex - m map[string]bool + logger logPrinter + m map[string]bool } -// Printf will ERROR log the string returned from fmt.Sprintf given the arguments, +// Printf will log the string returned from fmt.Sprintf given the arguments, // but not if it has been logged before. -func (l *DistinctErrorLogger) Printf(format string, v ...interface{}) { +func (l *DistinctLogger) Printf(format string, v ...interface{}) { logStatement := fmt.Sprintf(format, v...) l.RLock() if l.m[logStatement] { @@ -200,15 +205,16 @@ func (l *DistinctErrorLogger) Printf(format string, v ...interface{}) { l.Lock() if !l.m[logStatement] { - jww.ERROR.Print(logStatement) + l.logger.Println(logStatement) l.m[logStatement] = true + fmt.Println() } l.Unlock() } -// NewDistinctErrorLogger creates a new DistinctErrorLogger -func NewDistinctErrorLogger() *DistinctErrorLogger { - return &DistinctErrorLogger{m: make(map[string]bool)} +// NewDistinctErrorLogger creates a new DistinctLogger that logs ERRORs +func NewDistinctErrorLogger() *DistinctLogger { + return &DistinctLogger{m: make(map[string]bool), logger: jww.ERROR} } // Avoid spamming the logs with errors |