package main import ( "encoding/json" "fmt" "os" "time" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/timer" "mongo.games.com/game/model" "mongo.games.com/game/rpc" ) var ( monitorRpc = model.NewMonitorTool[rpc.State]("rpc") ) func StartMonitor() { timer.StartTimer(timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool { //monitorRpc.InsertKV(rpc.GetState()) //保存到本地文件 go func() { err := saveToFile("rpc.json", rpc.GetState()) if err != nil { logger.Logger.Errorf("rpc.json failed to save to file: %v", err) } }() return true }), nil, time.Minute*5, -1) } // 保存变量到文件(覆盖方式) func saveToFile(filename string, data interface{}) error { // 将数据转换为JSON字节 content, err := json.MarshalIndent(data, "", " ") if err != nil { return fmt.Errorf("failed to serialize data: %w", err) } // 写入文件,覆盖模式 err = os.WriteFile(filename, content, 0644) if err != nil { return fmt.Errorf("failed to write to file: %w", err) } return nil }