From 454ea0a49bafafbdb7c74894dbcfceaeeda932e9 Mon Sep 17 00:00:00 2001 From: xjasonlyu Date: Thu, 11 Feb 2021 15:56:45 +0800 Subject: [PATCH] Fix(log): default level may race MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename global variables in uber’s style. --- log/event.go | 10 +++++----- log/log.go | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/log/event.go b/log/event.go index 6d05c07..6930248 100755 --- a/log/event.go +++ b/log/event.go @@ -8,8 +8,8 @@ import ( ) var ( - logCh = make(chan interface{}) - source = observable.NewObservable(logCh) + _logCh = make(chan interface{}) + _source = observable.NewObservable(_logCh) ) type Event struct { @@ -24,16 +24,16 @@ func newEvent(level Level, format string, args ...interface{}) *Event { Time: time.Now(), Message: fmt.Sprintf(format, args...), } - logCh <- event /* send all events to logCh */ + _logCh <- event /* send all events to logCh */ return event } func Subscribe() observable.Subscription { - sub, _ := source.Subscribe() + sub, _ := _source.Subscribe() return sub } func UnSubscribe(sub observable.Subscription) { - source.UnSubscribe(sub) + _source.UnSubscribe(sub) } diff --git a/log/log.go b/log/log.go index d3d6255..bdf5e24 100755 --- a/log/log.go +++ b/log/log.go @@ -2,14 +2,14 @@ package log import ( "os" - "sync/atomic" "github.com/sirupsen/logrus" + "go.uber.org/atomic" ) var ( - // defaultLevel is package default logging level. - defaultLevel = InfoLevel + // _defaultLevel is package default logging level. + _defaultLevel = atomic.NewUint32(uint32(InfoLevel)) ) func init() { @@ -18,7 +18,7 @@ func init() { } func SetLevel(level Level) { - atomic.StoreUint32((*uint32)(&defaultLevel), uint32(level)) + _defaultLevel.Store(uint32(level)) } func Debugf(format string, args ...interface{}) { @@ -43,7 +43,7 @@ func Fatalf(format string, args ...interface{}) { func logf(level Level, format string, args ...interface{}) { event := newEvent(level, format, args...) - if event.Level > defaultLevel { + if uint32(event.Level) > _defaultLevel.Load() { return }