mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	修复审计日志无法自动清理的Bug
This commit is contained in:
		@@ -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 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user