添加日志保存处理及定时清除,添加通用系统内定时任务执行
This commit is contained in:
parent
785779d0c5
commit
beaecbbb01
|
|
@ -26,3 +26,13 @@ func deleteByID(id int) bool {
|
||||||
DB.Where("ID = ?", id).Delete(&Logger{})
|
DB.Where("ID = ?", id).Delete(&Logger{})
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 删除3天前的日志
|
||||||
|
func DeleteLog(days int) bool {
|
||||||
|
res := DB.Exec("delete from loggers where created_at < DATE_SUB(CURDATE(), INTERVAL ? DAY)", days)
|
||||||
|
if res.Error != nil {
|
||||||
|
fmt.Println("DeleteLog error", res.Error)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
|
||||||
93
main.go
93
main.go
|
|
@ -1,6 +1,8 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/golang-jwt/jwt"
|
"github.com/golang-jwt/jwt"
|
||||||
"github.com/robfig/cron/v3"
|
"github.com/robfig/cron/v3"
|
||||||
|
|
@ -43,6 +45,8 @@ func main() {
|
||||||
log.Fatal("添加定时任务失败: ", err)
|
log.Fatal("添加定时任务失败: ", err)
|
||||||
}
|
}
|
||||||
c.Start()
|
c.Start()
|
||||||
|
//读取配置文件,设置系统
|
||||||
|
ReadConfigToSetSystem()
|
||||||
r.Run(":" + proto.Config.SERVER_PORT) // listen and serve on 0.0.0.0:8083
|
r.Run(":" + proto.Config.SERVER_PORT) // listen and serve on 0.0.0.0:8083
|
||||||
}
|
}
|
||||||
func init() {
|
func init() {
|
||||||
|
|
@ -86,7 +90,9 @@ func writeLogger(c *gin.Context) {
|
||||||
|
|
||||||
func JWTAuthMiddleware() gin.HandlerFunc {
|
func JWTAuthMiddleware() gin.HandlerFunc {
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
writeLogger(c)
|
if proto.Config.LOG_SAVE_DAYS > 0 {
|
||||||
|
writeLogger(c)
|
||||||
|
}
|
||||||
// 从请求头中获取 JWT 令牌
|
// 从请求头中获取 JWT 令牌
|
||||||
tokenString := c.Request.Header.Get("token")
|
tokenString := c.Request.Header.Get("token")
|
||||||
|
|
||||||
|
|
@ -172,4 +178,89 @@ func myTask() {
|
||||||
if proto.Config.MONITOR {
|
if proto.Config.MONITOR {
|
||||||
handler.ScanDeviceStatus()
|
handler.ScanDeviceStatus()
|
||||||
}
|
}
|
||||||
|
//其它定时任务-通用
|
||||||
|
RunGeneralCron()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReadConfigToSetSystem() {
|
||||||
|
//redis添加通用定时任务
|
||||||
|
key := "cron_info"
|
||||||
|
//日志清理
|
||||||
|
res := worker.GetRedis(key)
|
||||||
|
var cron_infos []proto.CronInfo
|
||||||
|
if res != "" {
|
||||||
|
err := json.Unmarshal([]byte(res), &cron_infos)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error decoding config")
|
||||||
|
}
|
||||||
|
|
||||||
|
//查看清除日志任务是否存在
|
||||||
|
if proto.Config.LOG_SAVE_DAYS > 0 {
|
||||||
|
var is_exist bool
|
||||||
|
for _, v := range cron_infos {
|
||||||
|
if v.Type == 1 {
|
||||||
|
is_exist = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !is_exist {
|
||||||
|
var logClean proto.CronInfo
|
||||||
|
logClean.Type = 1
|
||||||
|
logClean.Info = "日志清理"
|
||||||
|
logClean.Curr = 86400
|
||||||
|
logClean.Every = 86400
|
||||||
|
cron_infos = append(cron_infos, logClean)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if proto.Config.LOG_SAVE_DAYS > 0 {
|
||||||
|
var logClean proto.CronInfo
|
||||||
|
logClean.Type = 1
|
||||||
|
logClean.Info = "日志清理"
|
||||||
|
logClean.Curr = 86400
|
||||||
|
logClean.Every = 86400
|
||||||
|
cron_infos = append(cron_infos, logClean)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//存入redis
|
||||||
|
data, err := json.Marshal(cron_infos)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error encoding config")
|
||||||
|
}
|
||||||
|
worker.SetRedis(key, string(data))
|
||||||
|
}
|
||||||
|
|
||||||
|
func RunGeneralCron() {
|
||||||
|
//redis添加通用定时任务
|
||||||
|
key := "cron_info"
|
||||||
|
//日志清理
|
||||||
|
res := worker.GetRedis(key)
|
||||||
|
var cron_infos []proto.CronInfo
|
||||||
|
if res != "" {
|
||||||
|
err := json.Unmarshal([]byte(res), cron_infos)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error decoding config")
|
||||||
|
}
|
||||||
|
for _, v := range cron_infos {
|
||||||
|
//1:日志清理,其他待定
|
||||||
|
if v.Type == 1 {
|
||||||
|
//日志清理
|
||||||
|
if v.Curr <= 0 {
|
||||||
|
//执行日志清理
|
||||||
|
go dao.DeleteLog(proto.Config.LOG_SAVE_DAYS)
|
||||||
|
v.Curr = v.Every
|
||||||
|
} else {
|
||||||
|
v.Curr -= 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//存入redis
|
||||||
|
data, err := json.Marshal(cron_infos)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error encoding config")
|
||||||
|
}
|
||||||
|
worker.SetRedis(key, string(data))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,8 +74,9 @@ type ConfigStruct struct {
|
||||||
TOKEN_SECRET string `json:"token_secret"`
|
TOKEN_SECRET string `json:"token_secret"`
|
||||||
CID_BASE_DIR string `json:"cid_base_dir"`
|
CID_BASE_DIR string `json:"cid_base_dir"`
|
||||||
FILE_BASE_DIR string `json:"file_base_dir"`
|
FILE_BASE_DIR string `json:"file_base_dir"`
|
||||||
MONITOR bool `json:"monitor"` // 状态监控及邮件通知
|
MONITOR bool `json:"monitor"` // 状态监控及邮件通知
|
||||||
SERVER_PORT string `json:"server_port"` // 服务端口
|
SERVER_PORT string `json:"server_port"` // 服务端口
|
||||||
|
LOG_SAVE_DAYS int `json:"log_save_days"` // 日志保存天数,-1表示不保存,0表示永久保存
|
||||||
}
|
}
|
||||||
|
|
||||||
// 读取配置文件
|
// 读取配置文件
|
||||||
|
|
|
||||||
|
|
@ -17,3 +17,11 @@ type CIDRUN struct {
|
||||||
Curr int `json:"curr" form:"curr"` //当前剩余时间,每次执行减10s小于等于0则执行
|
Curr int `json:"curr" form:"curr"` //当前剩余时间,每次执行减10s小于等于0则执行
|
||||||
Every int `json:"every" form:"every"` //每隔多少秒执行一次,小于等于0表示不执行,时间粒度为10s
|
Every int `json:"every" form:"every"` //每隔多少秒执行一次,小于等于0表示不执行,时间粒度为10s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 用于执行函数,方法
|
||||||
|
type CronInfo struct {
|
||||||
|
Type int `json:"type" form:"type"` //类型编码,1日志清理(且只会有一个),其他待定
|
||||||
|
Info string `json:"info" form:"info"` //信息
|
||||||
|
Curr int `json:"curr" form:"curr"` //当前剩余时间,每次执行减10s小于等于0则执行
|
||||||
|
Every int `json:"every" form:"every"` //每隔多少秒执行一次,小于等于0表示不执行,时间粒度为10s
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue