diff --git a/app/log/log_creator.go b/app/log/log_creator.go index f52e65103..dd8f8adca 100644 --- a/app/log/log_creator.go +++ b/app/log/log_creator.go @@ -3,6 +3,8 @@ package log import ( + "sync" + "github.com/v2fly/v2ray-core/v4/common" "github.com/v2fly/v2ray-core/v4/common/log" ) @@ -15,16 +17,24 @@ type HandlerCreator func(LogType, HandlerCreatorOptions) (log.Handler, error) var handlerCreatorMap = make(map[LogType]HandlerCreator) +var handlerCreatorMapLock = &sync.RWMutex{} + func RegisterHandlerCreator(logType LogType, f HandlerCreator) error { if f == nil { return newError("nil HandlerCreator") } + handlerCreatorMapLock.Lock() + defer handlerCreatorMapLock.Unlock() + handlerCreatorMap[logType] = f return nil } func createHandler(logType LogType, options HandlerCreatorOptions) (log.Handler, error) { + handlerCreatorMapLock.RLock() + defer handlerCreatorMapLock.RUnlock() + creator, found := handlerCreatorMap[logType] if !found { return nil, newError("unable to create log handler for ", logType)