修复审计日志无法自动清理的Bug

This commit is contained in:
GoEdgeLab
2022-03-08 09:53:10 +08:00
parent 5a7543beac
commit 54a3264802
2 changed files with 17 additions and 34 deletions

View File

@@ -33,7 +33,7 @@ func init() {
}) })
} }
// 创建管理员日志 // CreateLog 创建管理员日志
func (this *LogDAO) CreateLog(tx *dbs.Tx, adminType string, adminId int64, level string, description string, action string, ip string) error { func (this *LogDAO) CreateLog(tx *dbs.Tx, adminType string, adminId int64, level string, description string, action string, ip string) error {
op := NewLogOperator() op := NewLogOperator()
op.Level = level op.Level = level
@@ -57,7 +57,7 @@ func (this *LogDAO) CreateLog(tx *dbs.Tx, adminType string, adminId int64, level
return err return err
} }
// 计算所有日志数量 // CountLogs 计算所有日志数量
func (this *LogDAO) CountLogs(tx *dbs.Tx, dayFrom string, dayTo string, keyword string, userType string) (int64, error) { func (this *LogDAO) CountLogs(tx *dbs.Tx, dayFrom string, dayTo string, keyword string, userType string) (int64, error) {
dayFrom = this.formatDay(dayFrom) dayFrom = this.formatDay(dayFrom)
dayTo = this.formatDay(dayTo) dayTo = this.formatDay(dayTo)
@@ -86,7 +86,7 @@ func (this *LogDAO) CountLogs(tx *dbs.Tx, dayFrom string, dayTo string, keyword
return query.Count() return query.Count()
} }
// 列出单页日志 // ListLogs 列出单页日志
func (this *LogDAO) ListLogs(tx *dbs.Tx, offset int64, size int64, dayFrom string, dayTo string, keyword string, userType string) (result []*Log, err error) { func (this *LogDAO) ListLogs(tx *dbs.Tx, offset int64, size int64, dayFrom string, dayTo string, keyword string, userType string) (result []*Log, err error) {
dayFrom = this.formatDay(dayFrom) dayFrom = this.formatDay(dayFrom)
dayTo = this.formatDay(dayTo) dayTo = this.formatDay(dayTo)
@@ -120,7 +120,7 @@ func (this *LogDAO) ListLogs(tx *dbs.Tx, offset int64, size int64, dayFrom strin
return return
} }
// 物理删除日志 // DeleteLogPermanently 物理删除日志
func (this *LogDAO) DeleteLogPermanently(tx *dbs.Tx, logId int64) error { func (this *LogDAO) DeleteLogPermanently(tx *dbs.Tx, logId int64) error {
if logId <= 0 { if logId <= 0 {
return errors.New("invalid logId") return errors.New("invalid logId")
@@ -129,14 +129,14 @@ func (this *LogDAO) DeleteLogPermanently(tx *dbs.Tx, logId int64) error {
return err return err
} }
// 物理删除所有日志 // DeleteAllLogsPermanently 物理删除所有日志
func (this *LogDAO) DeleteAllLogsPermanently(tx *dbs.Tx) error { func (this *LogDAO) DeleteAllLogsPermanently(tx *dbs.Tx) error {
_, err := this.Query(tx). _, err := this.Query(tx).
Delete() Delete()
return err return err
} }
// 物理删除某些天之前的日志 // DeleteLogsPermanentlyBeforeDays 物理删除某些天之前的日志
func (this *LogDAO) DeleteLogsPermanentlyBeforeDays(tx *dbs.Tx, days int) error { func (this *LogDAO) DeleteLogsPermanentlyBeforeDays(tx *dbs.Tx, days int) error {
if days <= 0 { if days <= 0 {
days = 0 days = 0
@@ -148,7 +148,7 @@ func (this *LogDAO) DeleteLogsPermanentlyBeforeDays(tx *dbs.Tx, days int) error
return err return err
} }
// 计算当前日志容量大小 // SumLogsSize 计算当前日志容量大小
func (this *LogDAO) SumLogsSize() (int64, error) { func (this *LogDAO) SumLogsSize() (int64, error) {
col, err := this.Instance.FindCol(0, "SELECT DATA_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA=? AND TABLE_NAME=? LIMIT 1", this.Instance.Name(), this.Table) col, err := this.Instance.FindCol(0, "SELECT DATA_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA=? AND TABLE_NAME=? LIMIT 1", this.Instance.Name(), this.Table)
if err != nil { if err != nil {

View File

@@ -38,34 +38,17 @@ func (this *LogTask) Run() {
} }
func (this *LogTask) runClean() { func (this *LogTask) runClean() {
ticker := utils.NewTicker(24 * time.Hour) var ticker = utils.NewTicker(24 * time.Hour)
for ticker.Wait() { for ticker.Wait() {
err := this.loopClean(86400) err := this.loopClean()
if err != nil { if err != nil {
logs.Println("[TASK][LOG]" + err.Error()) logs.Println("[TASK][LOG]" + err.Error())
} }
} }
} }
func (this *LogTask) loopClean(seconds int64) error { func (this *LogTask) loopClean() error {
// 检查上次运行时间,防止重复运行 var configKey = "adminLogConfig"
settingKey := "logTaskCleanLoop"
timestamp := time.Now().Unix()
c, err := models.SharedSysSettingDAO.CompareInt64Setting(nil, settingKey, timestamp-seconds)
if err != nil {
return err
}
if c > 0 {
return nil
}
// 记录时间
err = models.SharedSysSettingDAO.UpdateSetting(nil, settingKey, []byte(numberutils.FormatInt64(timestamp)))
if err != nil {
return err
}
configKey := "adminLogConfig"
valueJSON, err := models.SharedSysSettingDAO.ReadSetting(nil, configKey) valueJSON, err := models.SharedSysSettingDAO.ReadSetting(nil, configKey)
if err != nil { if err != nil {
return err return err
@@ -74,7 +57,7 @@ func (this *LogTask) loopClean(seconds int64) error {
return nil return nil
} }
config := &systemconfigs.LogConfig{} var config = &systemconfigs.LogConfig{}
err = json.Unmarshal(valueJSON, config) err = json.Unmarshal(valueJSON, config)
if err != nil { if err != nil {
return err return err
@@ -89,7 +72,7 @@ func (this *LogTask) loopClean(seconds int64) error {
} }
func (this *LogTask) runMonitor() { func (this *LogTask) runMonitor() {
ticker := utils.NewTicker(1 * time.Minute) var ticker = utils.NewTicker(1 * time.Minute)
for ticker.Wait() { for ticker.Wait() {
err := this.loopMonitor(60) err := this.loopMonitor(60)
if err != nil { if err != nil {
@@ -100,8 +83,8 @@ func (this *LogTask) runMonitor() {
func (this *LogTask) loopMonitor(seconds int64) error { func (this *LogTask) loopMonitor(seconds int64) error {
// 检查上次运行时间,防止重复运行 // 检查上次运行时间,防止重复运行
settingKey := "logTaskMonitorLoop" var settingKey = "logTaskMonitorLoop"
timestamp := time.Now().Unix() var timestamp = time.Now().Unix()
c, err := models.SharedSysSettingDAO.CompareInt64Setting(nil, settingKey, timestamp-seconds) c, err := models.SharedSysSettingDAO.CompareInt64Setting(nil, settingKey, timestamp-seconds)
if err != nil { if err != nil {
return err return err
@@ -116,7 +99,7 @@ func (this *LogTask) loopMonitor(seconds int64) error {
return err return err
} }
configKey := "adminLogConfig" var configKey = "adminLogConfig"
valueJSON, err := models.SharedSysSettingDAO.ReadSetting(nil, configKey) valueJSON, err := models.SharedSysSettingDAO.ReadSetting(nil, configKey)
if err != nil { if err != nil {
return err return err
@@ -125,7 +108,7 @@ func (this *LogTask) loopMonitor(seconds int64) error {
return nil return nil
} }
config := &systemconfigs.LogConfig{} var config = &systemconfigs.LogConfig{}
err = json.Unmarshal(valueJSON, config) err = json.Unmarshal(valueJSON, config)
if err != nil { if err != nil {
return err return err