goProject/trunk/goutil/logUtil/impl-es/cache.go
皮蛋13361098506 1b77f62820 初始化项目
2025-01-06 16:01:02 +08:00

73 lines
1.3 KiB
Go

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
}