优化LogBatch结构

This commit is contained in:
lanrenwo 2022-11-01 22:52:26 +08:00
parent c2ddb7331d
commit 45ed1c34f9
1 changed files with 10 additions and 15 deletions

View File

@ -21,24 +21,20 @@ const (
) )
var ( var (
logAuditSink *LogSink
auditPayload *AuditPayload auditPayload *AuditPayload
logBatch *LogBatch
) )
// 审计日志 // 分析审计日志
type AuditPayload struct { type AuditPayload struct {
Pool *grpool.Pool Pool *grpool.Pool
IpAuditMap utils.IMaps IpAuditMap utils.IMaps
} }
// 保存批量的审计日志 // 保存审计日志
type LogBatch struct { type LogBatch struct {
Logs []dbdata.AccessAudit Logs []dbdata.AccessAudit
} LogChan chan dbdata.AccessAudit
// 批量日志池
type LogSink struct {
logChan chan dbdata.AccessAudit
} }
// 异步写入pool // 异步写入pool
@ -69,17 +65,16 @@ func logAuditBatch() {
if base.Cfg.AuditInterval < 0 { if base.Cfg.AuditInterval < 0 {
return return
} }
logAuditSink = &LogSink{
logChan: make(chan dbdata.AccessAudit, 5000),
}
auditPayload = &AuditPayload{ auditPayload = &AuditPayload{
Pool: grpool.NewPool(10, 500), Pool: grpool.NewPool(10, 500),
IpAuditMap: utils.NewMap("cmap", 0), IpAuditMap: utils.NewMap("cmap", 0),
} }
logBatch = &LogBatch{
LogChan: make(chan dbdata.AccessAudit, 5000),
}
var ( var (
limit = 100 // 超过上限批量写入数据表 limit = 100 // 超过上限批量写入数据表
outTime = time.NewTimer(time.Second) outTime = time.NewTimer(time.Second)
logBatch = &LogBatch{}
accessAudit = dbdata.AccessAudit{} accessAudit = dbdata.AccessAudit{}
) )
@ -87,7 +82,7 @@ func logAuditBatch() {
// 重置超时 时间 // 重置超时 时间
outTime.Reset(time.Second * 1) outTime.Reset(time.Second * 1)
select { select {
case accessAudit = <-logAuditSink.logChan: case accessAudit = <-logBatch.LogChan:
logBatch.Logs = append(logBatch.Logs, accessAudit) logBatch.Logs = append(logBatch.Logs, accessAudit)
if len(logBatch.Logs) >= limit { if len(logBatch.Logs) >= limit {
if !outTime.Stop() { if !outTime.Stop() {
@ -178,5 +173,5 @@ func logAudit(userName string, bPlData *[]byte) {
AccessProto: accessProto, AccessProto: accessProto,
Info: info, Info: info,
} }
logAuditSink.logChan <- audit logBatch.LogChan <- audit
} }