xuzhiheng 1 год назад
Родитель
Сommit
57699502ec
2 измененных файлов с 87 добавлено и 11 удалено
  1. 73 0
      tmp_project/log.go
  2. 14 11
      tmp_project/main.go

+ 73 - 0
tmp_project/log.go

@@ -0,0 +1,73 @@
+package main
+
+/**
+日志文件自动切换,默认保留15天内日志
+**/
+
+import (
+	"log"
+	"os"
+	"path/filepath"
+	"regexp"
+	"time"
+
+	"github.com/go-xweb/xweb"
+	"github.com/robfig/cron"
+)
+
+// 日志格式
+var fileReg = regexp.MustCompile("^(\\d{4}_[0-9_]{14})\\.log$")
+
+// 当前日志文件句柄
+var LogFile *os.File
+
+// 时间格式
+var FMT = "2006_01_02_15_04_05"
+
+// 日志目录
+var LogPath = "./jylog"
+
+func init() {
+	os.Mkdir(LogPath, os.ModePerm)
+	//默认保留15天内的日志,-1为永久保留
+	initLog(15)
+}
+
+func initLog(saveDay int) {
+	go logfile()
+	task := cron.New()
+	task.Start()
+	task.AddFunc("0 0 0 * * ?", func() {
+		go logfile()
+		time.Sleep(50 * time.Second)
+		if saveDay > 0 {
+			filepath.Walk(LogPath, func(path string, info os.FileInfo, err error) error {
+				str := fileReg.FindStringSubmatch(info.Name())
+				if len(str) == 2 {
+					t, er := time.ParseInLocation(FMT, str[1], time.Local)
+					if er == nil {
+						if (time.Now().Unix()-t.Unix())/86400 > int64(saveDay) {
+							log.Println("delete log file:", path, os.Remove(path))
+						}
+					}
+				}
+				return nil
+			})
+		}
+	})
+}
+
+// 创建并切换输出文件
+func logfile() {
+	now := time.Now().Format(FMT)
+	file, _ := os.Create(LogPath + "/" + now + ".log")
+	log.SetOutput(file)
+	xweb.RootApp().Logger.SetOutput(file)
+	go func(file *os.File) {
+		time.Sleep(5 * time.Second)
+		if LogFile != nil {
+			LogFile.Close()
+		}
+		LogFile = file
+	}(file)
+}

+ 14 - 11
tmp_project/main.go

@@ -161,6 +161,7 @@ func FindData(data map[string]map[string]interface{}) int {
 			data := Es.Get("projectset", "projectset", querystrs)
 			if data != nil && *data != nil && len(*data) > 0 {
 				projectId = common.ObjToString((*data)[0]["_id"])
+				Mgo.UpdateById("usermail", id, map[string]interface{}{"$set": map[string]interface{}{"projectId": projectId}})
 			}
 		}
 		if data[projectId] != nil {
@@ -181,17 +182,19 @@ func FindData(data map[string]map[string]interface{}) int {
 								(*esData)["appid"] = appid
 								(*esData)["createtime"] = time.Now().Unix()
 								(*esData)["details"] = getDetails(infoid)
-								mgoId := Mgo.Save(cfg.Db.ColName, *esData)
-								if mgoId != "" {
-									// delok := Mgo.Del(cfg.Db.TemporaryColName, map[string]interface{}{"_id": thisData["_id"]})
-									// if delok {
-									// 	log.Println("新华三定时数据删除成功---", id, "-", projectId, "-", mgoId)
-									// } else {
-									// 	log.Println("新华三定时数据删除失败!!!", id, "-", projectId, "-", mgoId)
-									// }
-									log.Println("保存到项目接口成功---", id, "-", projectId, "-", mgoId)
-								} else {
-									log.Println("保存到项目接口失败!!!", id, "-", projectId)
+								if Mgo.Count(cfg.Db.ColName, map[string]interface{}{"id": infoid}) < 1 {
+									mgoId := Mgo.Save(cfg.Db.ColName, *esData)
+									if mgoId != "" {
+										// delok := Mgo.Del(cfg.Db.TemporaryColName, map[string]interface{}{"_id": thisData["_id"]})
+										// if delok {
+										// 	log.Println("新华三定时数据删除成功---", id, "-", projectId, "-", mgoId)
+										// } else {
+										// 	log.Println("新华三定时数据删除失败!!!", id, "-", projectId, "-", mgoId)
+										// }
+										log.Println("保存到项目接口成功---", id, "-", projectId, "-", mgoId)
+									} else {
+										log.Println("保存到项目接口失败!!!", id, "-", projectId)
+									}
 								}
 							}
 						}