diff --git a/app/log/log_creator.go b/app/log/log_creator.go
index af4cb210..ba53f2fc 100644
--- a/app/log/log_creator.go
+++ b/app/log/log_creator.go
@@ -1,6 +1,8 @@
 package log
 
 import (
+	"sync"
+	
 	"github.com/xtls/xray-core/common"
 	"github.com/xtls/xray-core/common/log"
 )
@@ -13,16 +15,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)