73 lines
1.3 KiB
Plaintext
73 lines
1.3 KiB
Plaintext
|
|
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
|
||
|
|
}
|