From bb56cf561ba3f9536db3d741b2a1e5d6473c3829 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Carlos=20Nieto?= <jose.carlos@menteslibres.net>
Date: Wed, 28 Sep 2016 16:56:14 -0500
Subject: [PATCH] Refactor defaultLogger value.

---
 config.go |  3 ++-
 logger.go | 20 ++++++++------------
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/config.go b/config.go
index d60b2e5b..4735aa67 100644
--- a/config.go
+++ b/config.go
@@ -21,13 +21,14 @@ type Settings interface {
 type conf struct {
 	loggingEnabled uint32
 	queryLogger    atomic.Value
+	defaultLogger  defaultLogger
 }
 
 func (c *conf) Logger() Logger {
 	if lg := c.queryLogger.Load(); lg != nil {
 		return lg.(Logger)
 	}
-	return nil
+	return &c.defaultLogger
 }
 
 func (c *conf) SetLogger(lg Logger) {
diff --git a/logger.go b/logger.go
index 9ecda484..f346598e 100644
--- a/logger.go
+++ b/logger.go
@@ -19,6 +19,11 @@ const (
 	fmtLogTimeTaken    = `Time taken:     %0.5fs`
 )
 
+var (
+	reInvisibleChars       = regexp.MustCompile(`[\s\r\n\t]+`)
+	reColumnCompareExclude = regexp.MustCompile(`[^a-zA-Z0-9]`)
+)
+
 // QueryStatus represents a query after being executed.
 type QueryStatus struct {
 	SessID uint64
@@ -91,7 +96,6 @@ const (
 
 func init() {
 	if envEnabled(EnvEnableDebug) {
-		Conf.SetLogger(&defaultLogger{}) // Using default logger.
 		Conf.SetLogging(true)
 	}
 }
@@ -105,22 +109,14 @@ type Logger interface {
 
 // Log sends a query status report to the configured logger.
 func Log(m *QueryStatus) {
-	logger := Conf.Logger()
-	if logger == nil {
-		logger = &defaultLogger{}
-		Conf.SetLogger(logger)
-	}
-	logger.Log(m)
+	Conf.Logger().Log(m)
 }
 
-var (
-	reInvisibleChars       = regexp.MustCompile(`[\s\r\n\t]+`)
-	reColumnCompareExclude = regexp.MustCompile(`[^a-zA-Z0-9]`)
-)
-
 type defaultLogger struct {
 }
 
 func (lg *defaultLogger) Log(m *QueryStatus) {
 	log.Printf("\n\t%s\n\n", strings.Replace(m.String(), "\n", "\n\t", -1))
 }
+
+var _ = Logger(&defaultLogger{})
-- 
GitLab