diff --git a/config.go b/config.go index d60b2e5b06caf3e77ebdd9000c03f76c2e9c1b9e..4735aa67325315f138441aef689826a8d3f71970 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 9ecda4846b5c96651ff27810880232a25fb92fad..f346598ea6ab8d94df698688ce184a73caf844cc 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{})