From 2a0e4bba4beeae4fa14251a7cc13b996faa96c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Mon, 1 Nov 2021 15:58:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=8A=82=E7=82=B9=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E6=97=A5=E5=BF=97=E6=B8=85=E7=90=86=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/node_log_dao.go | 15 +++++++++++++++ internal/tasks/node_log_cleaner_task.go | 12 +++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/internal/db/models/node_log_dao.go b/internal/db/models/node_log_dao.go index edd5e272..8b25e82f 100644 --- a/internal/db/models/node_log_dao.go +++ b/internal/db/models/node_log_dao.go @@ -80,6 +80,21 @@ func (this *NodeLogDAO) CreateLog(tx *dbs.Tx, nodeRole nodeconfigs.NodeRole, nod return err } +// DeleteExpiredLogsWithLevel 清除超出一定日期的某级别日志 +func (this *NodeLogDAO) DeleteExpiredLogsWithLevel(tx *dbs.Tx, level string, days int) error { + if days <= 0 { + return errors.New("invalid days '" + strconv.Itoa(days) + "'") + } + date := time.Now().AddDate(0, 0, -days) + expireDay := timeutil.Format("Ymd", date) + _, err := this.Query(tx). + Attr("level", level). + Where("day<=:day"). + Param("day", expireDay). + Delete() + return err +} + // DeleteExpiredLogs 清除超出一定日期的日志 func (this *NodeLogDAO) DeleteExpiredLogs(tx *dbs.Tx, days int) error { if days <= 0 { diff --git a/internal/tasks/node_log_cleaner_task.go b/internal/tasks/node_log_cleaner_task.go index 4e83ac6f..f58185f7 100644 --- a/internal/tasks/node_log_cleaner_task.go +++ b/internal/tasks/node_log_cleaner_task.go @@ -13,7 +13,7 @@ func init() { }) } -// 清理节点日志的工具 +// NodeLogCleanerTask 清理节点日志的任务 type NodeLogCleanerTask struct { duration time.Duration } @@ -35,6 +35,12 @@ func (this *NodeLogCleanerTask) Start() { } func (this *NodeLogCleanerTask) loop() error { - // TODO 30天这个数值改成可以设置 - return models.SharedNodeLogDAO.DeleteExpiredLogs(nil, 30) + // 删除7天以前的info日志 + err := models.SharedNodeLogDAO.DeleteExpiredLogsWithLevel(nil, "info", 7) + if err != nil { + return err + } + + // TODO 14天这个数值改成可以设置 + return models.SharedNodeLogDAO.DeleteExpiredLogs(nil, 14) }