summaryrefslogtreecommitdiffstats
path: root/helpers/general.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-01-28 14:00:03 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-01-28 15:33:41 +0100
commit3054a461850485bad3293907720f4c5a9d76cab0 (patch)
treed7a7735a81fc8c9707a6629fc514d4db6118c346 /helpers/general.go
parent3b3e771d613b3d8b9c54bc8b42e4bae7ba0bbb68 (diff)
Make the DistinctErrorLogger more generic
Diffstat (limited to 'helpers/general.go')
-rw-r--r--helpers/general.go24
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