package impl_es import "sync" const ( // 批量保存的消息数量 con_MAX_NUMBER_OF_MESSAGE = 20 ) // logCache // @description: 日志缓存 type logCache struct { logCacheList []*EsLogModel // logCacheList 日志缓存对象 logCacheMutex sync.RWMutex // logCacheMutex 锁 } // newlogCache // @description: 构造日志缓存 // parameter: // return: // @*logCache: func newlogCache() *logCache { m := &logCache{ logCacheList: make([]*EsLogModel, 0, 256), logCacheMutex: sync.RWMutex{}, } return m } // 写入在线日志 // 参数: // 日志信息对象 // 返回值: // 无 func (c *logCache) addCacheLog(logObj *EsLogModel) { c.logCacheMutex.Lock() defer c.logCacheMutex.Unlock() c.logCacheList = append(c.logCacheList, logObj) } // 获取日志数量 // 参数: // 无 // 返回值: // 缓存中的日志数量 func (c *logCache) getCacheLogCount() int { c.logCacheMutex.RLock() defer c.logCacheMutex.RUnlock() return len(c.logCacheList) } // 获取缓存中的日志 // 参数: // 数量 // 返回值: // 日志列表对象 func (c *logCache) getCacheLog(logCount int) (logList []*EsLogModel) { if logCount > con_MAX_NUMBER_OF_MESSAGE { logCount = con_MAX_NUMBER_OF_MESSAGE } c.logCacheMutex.Lock() defer c.logCacheMutex.Unlock() logList = c.logCacheList[:logCount] c.logCacheList = c.logCacheList[logCount:] return }