增加审计日志、图表数据自动清理功能

This commit is contained in:
lanrenwo
2022-10-12 10:04:18 +08:00
parent 2c8474a478
commit 82dfb5d04f
13 changed files with 267 additions and 6 deletions

View File

@@ -0,0 +1,20 @@
package cron
import (
"github.com/bjdgyc/anylink/base"
"github.com/bjdgyc/anylink/dbdata"
)
// 清除访问审计日志
func ClearAudit() {
lifeDay, timesUp := isClearTime()
if !timesUp {
return
}
// 当审计日志永久保存,则退出
if lifeDay <= 0 {
return
}
affected, err := dbdata.ClearAccessAudit(getTimeAgo(lifeDay))
base.Info("Cron ClearAudit: ", affected, err)
}

View File

@@ -0,0 +1,52 @@
package cron
import (
"time"
"github.com/bjdgyc/anylink/base"
"github.com/bjdgyc/anylink/dbdata"
)
const siLifeDay = 30
// 清除图表数据
func ClearStatsInfo() {
_, timesUp := isClearTime()
if !timesUp {
return
}
ts := getTimeAgo(siLifeDay)
for _, item := range dbdata.StatsInfoIns.Actions {
affected, err := dbdata.StatsInfoIns.ClearStatsInfo(item, ts)
base.Info("Cron ClearStatsInfo "+item+": ", affected, err)
}
}
// 是否到了"清理时间"
func isClearTime() (int, bool) {
dataLog, err := dbdata.SettingGetAuditLog()
if err != nil {
base.Error("Cron SettingGetLog: ", err)
return -1, false
}
currentTime := time.Now().Format("15:04")
// 未到"清理时间"时, 则返回
if dataLog.ClearTime != currentTime {
return -1, false
}
return dataLog.LifeDay, true
}
// 根据存储时长,获取清理日期
func getTimeAgo(days int) string {
var timeS string
ts := time.Now().AddDate(0, 0, -days)
tsZero := time.Date(ts.Year(), ts.Month(), ts.Day(), 0, 0, 0, 0, time.Local)
timeS = tsZero.Format(dbdata.LayoutTimeFormat)
// UTC
switch base.Cfg.DbType {
case "sqlite3", "postgres":
timeS = tsZero.UTC().Format(dbdata.LayoutTimeFormat)
}
return timeS
}

14
server/cron/start.go Normal file
View File

@@ -0,0 +1,14 @@
package cron
import (
"time"
"github.com/go-co-op/gocron"
)
func Start() {
s := gocron.NewScheduler(time.Local)
s.Cron("0 * * * *").Do(ClearAudit)
s.Cron("0 * * * *").Do(ClearStatsInfo)
s.StartAsync()
}