shithub: hugo

Download patch

ref: 3054a461850485bad3293907720f4c5a9d76cab0
parent: 3b3e771d613b3d8b9c54bc8b42e4bae7ba0bbb68
author: Bjørn Erik Pedersen <[email protected]>
date: Thu Jan 28 09:00:03 EST 2016

Make the DistinctErrorLogger more generic

--- a/helpers/general.go
+++ b/helpers/general.go
@@ -181,15 +181,20 @@
 	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 @@
 
 	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