From cd85fd66fffa929aeb84457a8abb78a5f1980226 Mon Sep 17 00:00:00 2001 From: liangzy Date: Fri, 15 May 2020 18:33:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B6=E5=8F=91=E8=AF=BBnil=E9=94=99?= =?UTF-8?q?=E9=92=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- log.go | 18 +++++++++++++----- log_test.go | 13 +++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/log.go b/log.go index 03be230..596174b 100644 --- a/log.go +++ b/log.go @@ -14,6 +14,7 @@ var envkey = "CENTER_RUNMODE" type Logger struct { Lable string *logs.BeeLogger + lock sync.RWMutex } func (self *Logger) SetAdapter(level Level, adapter Adapter) *Logger { @@ -34,17 +35,16 @@ func (self *Logger) DropAdapter(adapter Adapter) *Logger { return self } -func New(label string, channelLens ...int64) (l *Logger, loaded bool) { +func newLogger(label string, channelLens ...int64) (l *Logger, loaded bool) { var channellens int64 var tmp interface{} - tmp, loaded = loggers.LoadOrStore(label, new(Logger)) - l = tmp.(*Logger) if len(channelLens) > 0 { channellens = channelLens[0] } - if !loaded { + tmp, loaded = loggers.LoadOrStore(label, func() *Logger { + l := &Logger{BeeLogger: logs.NewLogger(channellens)} l.Lable = label l.BeeLogger = logs.NewLogger(channellens) l.BeeLogger.Lable = label @@ -52,10 +52,17 @@ func New(label string, channelLens ...int64) (l *Logger, loaded bool) { l.SetPrefix(fmt.Sprintf("[env:%s logger:%s]", os.Getenv(envkey), label)) l.EnableFuncCallDepth(true) l.SetLogFuncCallDepth(2) - } + return l + }()) + + l = tmp.(*Logger) return } +func New(label string, channelLens ...int64) (l *Logger, loaded bool) { + return newLogger(label, channelLens...) +} + func Get(label string, channelLens ...int64) (l *Logger) { var filelevel Level = LevelInfo var loaded bool @@ -78,6 +85,7 @@ func GetEs(label string, channelLens ...int64) (l *Logger) { if l, loaded = New(label, channelLens...); !loaded { l.SetAdapter(filelevel, AdapterFile).SetAdapter(LevelAll, AdapterConsole).SetAdapter(filelevel, AdapterElasticSearch) + l.lock.Unlock() } return } diff --git a/log_test.go b/log_test.go index e5303bb..3640a00 100644 --- a/log_test.go +++ b/log_test.go @@ -59,3 +59,16 @@ func TestDropAdapter(t *testing.T) { Debug(errors.New("he hello")) CloseAll() } + +func TestNew(t *testing.T) { + for i := 1; i < 10; i++ { + go func(i int) { + GetEs("ok").Debug("%d", i) + time.Sleep(1 * time.Second) + }(i) + } + + for i := 1; i < 10; i++ { + GetEs("ok").Debug("aaaaaa%d", i) + } +}