From 84e9a4a849843d938e1f87ef5135f6a205216aeb Mon Sep 17 00:00:00 2001 From: "guangxue.wu" Date: Thu, 31 Oct 2024 17:16:35 +0800 Subject: [PATCH] feat: Return inner Logger from GetLogger for log.WithContext reuse fix: Ensure thread safety by eliminating lock copy in GetLogger --- log/global.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/log/global.go b/log/global.go index f1984fc3f9b..ae9244dffb9 100644 --- a/log/global.go +++ b/log/global.go @@ -13,7 +13,7 @@ var global = &loggerAppliance{} // loggerAppliance is the proxy of `Logger` to // make logger change will affect all sub-logger. type loggerAppliance struct { - lock sync.Mutex + lock sync.RWMutex Logger } @@ -35,7 +35,9 @@ func SetLogger(logger Logger) { // GetLogger returns global logger appliance as logger in current process. func GetLogger() Logger { - return global + global.lock.RLock() + defer global.lock.RUnlock() + return global.Logger } // Log Print log by level and keyvals.