// 加载公会历史消息 func loadUnionHistoryMessage(unionId string) { // 判断是否已经加载过公会的历史消息文件 if ifHasLoaded(unionId) { return } // 判断是否存在文件夹 if !fileUtil.IsDirExists(con_HistoryPath) { return } // 读取公会对应文件内容 bytes, err := fileUtil.ReadFileBytes(filepath.Join(con_HistoryPath, getUnionHistoryMessageFileName(unionId))) if err != nil { // 判断文件是否存在,如果不存在直接返回 if os.IsNotExist(err) { return } panic(fmt.Errorf("加载公会历史消息错误,错误信息为:%s", err)) } // 反序列化文件 messageList := make([]*responseDataObject.SocketResponseObject, 0, configBLL.MaxHistoryCount()) if err = json.Unmarshal(bytes, &messageList); err != nil { panic(fmt.Errorf("反序列化公会历史消息错误,错误信息为:%s", err)) } // 加锁 unionHistoryMessageMutex.Lock() defer unionHistoryMessageMutex.Unlock() // 保存到unionHistoryMessageList中 unionHistoryMessageList[unionId] = messageList }
func init() { if configBLL.IfRecordMessage() == false { return } // 判断文件夹是否存在,如果不存在则创建 if !fileUtil.IsDirExists(messageFolderPath) { os.MkdirAll(messageFolderPath, os.ModePerm|os.ModeTemporary) } // 启动新Gorountine来处理消息 go recordMessage() }
// 加载世界历史消息 func loadWorldHistoryMessage() { // 判断是否存在文件夹 if !fileUtil.IsDirExists(con_HistoryPath) { return } // 读取文件内容 bytes, err := fileUtil.ReadFileBytes(filepath.Join(con_HistoryPath, getWorldHistoryMessageFileName())) if err != nil { // 判断文件是否存在,如果不存在直接返回 if os.IsNotExist(err) { return } panic(fmt.Errorf("加载世界历史消息错误,错误信息为:%s", err)) } if err = json.Unmarshal(bytes, &worldHistoryMessageList); err != nil { panic(fmt.Errorf("反序列化世界历史消息错误,错误信息为:%s", err)) } }
func writeLog(logObj *logObject) { // 获取当前时间 now := time.Now() // 获得年、月、日、时的字符串形式 yearString := strconv.Itoa(now.Year()) monthString := strconv.Itoa(int(now.Month())) dayString := strconv.Itoa(now.Day()) hourString := strconv.Itoa(now.Hour()) // 构造文件路径和文件名 filePath := filepath.Join(logPath, yearString, monthString) fileName := "" if logObj.ifIncludeHour { fileName = fmt.Sprintf("%s-%s-%s-%s.%s.%s", yearString, monthString, dayString, hourString, logObj.level, con_FILE_SUFFIX) } else { fileName = fmt.Sprintf("%s-%s-%s.%s.%s", yearString, monthString, dayString, logObj.level, con_FILE_SUFFIX) } // 得到最终的fileName fileName = filepath.Join(filePath, fileName) // 判断文件夹是否存在,如果不存在则创建 if !fileUtil.IsDirExists(filePath) { if err := os.MkdirAll(filePath, os.ModePerm|os.ModeTemporary); err != nil { return } } // 打开文件(如果文件存在就以读写模式打开,并追加写入;如果文件不存在就创建,然后以读写模式打开。) f, err := os.OpenFile(fileName, os.O_CREATE|os.O_APPEND|os.O_RDWR, os.ModePerm|os.ModeTemporary) if err != nil { return } defer f.Close() // 写入内容 f.WriteString(logObj.logInfo) }