初始化项目文件
This commit is contained in:
40
api_iris/crontab/init.go
Normal file
40
api_iris/crontab/init.go
Normal file
@ -0,0 +1,40 @@
|
||||
package crontab
|
||||
|
||||
import (
|
||||
"github.com/robfig/cron/v3"
|
||||
"github.com/sirupsen/logrus"
|
||||
"main/database"
|
||||
"main/model"
|
||||
)
|
||||
|
||||
var MyCron *cron.Cron
|
||||
|
||||
func InitAllCron() {
|
||||
MyCron = cron.New(cron.WithSeconds())
|
||||
MyCron.Start()
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
var runningCron []model.RunningCrontab
|
||||
if err := db.Where("deleted_at is null").Delete(&runningCron).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func UpdateCronDb(id int, name string, status bool) {
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
var runningCron model.RunningCrontab
|
||||
if status {
|
||||
if err := db.Create(&model.RunningCrontab{
|
||||
Name: name,
|
||||
CronId: id,
|
||||
}).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
if err := db.Delete(&runningCron, "cron_id = ?", id).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
70
api_iris/crontab/nginxLog.go
Normal file
70
api_iris/crontab/nginxLog.go
Normal file
@ -0,0 +1,70 @@
|
||||
package crontab
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/sirupsen/logrus"
|
||||
"main/config"
|
||||
"main/database"
|
||||
"main/model"
|
||||
"main/service/admin"
|
||||
"main/utils"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// CornSaveNginxLog 定时任务处理nginx日志
|
||||
func CornSaveNginxLog() {
|
||||
cPath, _ := os.Getwd()
|
||||
logPath := path.Join(cPath, config.Config.Logs.Nginx)
|
||||
fileList, _ := os.ReadDir(logPath)
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
var logDealList []model.LogFileDealLog
|
||||
var resLogList []model.Logs
|
||||
if err := db.Find(&logDealList).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
return
|
||||
}
|
||||
for _, file := range fileList {
|
||||
if strings.Contains(file.Name(), "access-") {
|
||||
date := strings.Split(strings.Split(file.Name(), "access-")[1], ".")[0]
|
||||
if getDateDealBool(date, logDealList) || date == time.Now().Format("2006-01-02") {
|
||||
continue
|
||||
}
|
||||
logrus.Infoln(date, ":nginx日志开始处理")
|
||||
if err := db.Where("time like ?", fmt.Sprintf("%s%%", date)).Delete(&resLogList).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
return
|
||||
}
|
||||
logList, _ := utils.FileRead(path.Join(logPath, file.Name()), true)
|
||||
for _, v := range logList {
|
||||
c := make(chan model.Logs)
|
||||
go admin.FormatLog(v, date, c)
|
||||
resLogItem := <-c
|
||||
if err := db.Create(&resLogItem).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
if err := db.Create(&model.LogFileDealLog{
|
||||
Date: date,
|
||||
Success: true,
|
||||
}).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
return
|
||||
}
|
||||
logrus.Infoln(date, ":nginx日志处理完成")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取当前日期是否已处理
|
||||
func getDateDealBool(date string, dealLog []model.LogFileDealLog) bool {
|
||||
for _, v := range dealLog {
|
||||
if v.Date == date && v.Success {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
5
api_iris/crontab/type.d.go
Normal file
5
api_iris/crontab/type.d.go
Normal file
@ -0,0 +1,5 @@
|
||||
package crontab
|
||||
|
||||
type sysLogDateType struct {
|
||||
Datetime string `json:"datetime"`
|
||||
}
|
Reference in New Issue
Block a user