diff --git a/src/server/game/log_mgr.go b/src/server/game/log_mgr.go index 0f216af1..e333826d 100644 --- a/src/server/game/log_mgr.go +++ b/src/server/game/log_mgr.go @@ -197,6 +197,15 @@ func (L *LogMgr) InitManager() { } func (L *LogMgr) AddLog(logs *Log) { + // 复制结构体和 Param map,避免并发修改导致 json.Marshal 时 panic + copyLog := *logs + if logs.Param != nil { + newParam := make(map[string]interface{}, len(logs.Param)) + for k, v := range logs.Param { + newParam[k] = v + } + copyLog.Param = newParam + } // 如果已经开始关闭,直接丢弃 L.Lock.Lock() if L.closing {