From 4911d059a2acaa6974cfc155f1a7fc58ea2c9608 Mon Sep 17 00:00:00 2001 From: lxy <237809796@qq.com> Date: Sun, 23 Apr 2023 12:09:03 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=87=EE=86=BD=E6=95=BC=E9=94=9B=3F?= =?UTF-8?q?=E9=8A=86=E4=BD=B8=E7=9A=A2=E9=8F=83=E3=83=A5=E7=B9=94=E9=91=B7?= =?UTF-8?q?=EE=81=84=E7=95=BE=E6=B6=94=E5=A4=8A=E5=95=93=E9=8D=8F=E3=83=A6?= =?UTF-8?q?=E6=A3=A9=E8=B9=87=E6=A5=81=E6=9E=83=E6=B5=A0=3Fzhub.log=202?= =?UTF-8?q?=E9=8A=86=E4=BD=B8=E5=8F=BE=E6=B5=A0=E6=A0=A6=E7=B4=AD=E9=8D=96?= =?UTF-8?q?=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://47.119.165.148/zhub@164 e63fbceb-bcc3-4977-ac22-735b83d8d0f4 --- main.go | 13 ++++++---- pkg.bat | 2 +- zsub/config.go | 60 +++++++++++++++++++++++++++++++++++++++++--- zsub/msg-consumer.go | 2 +- zsub/zdb.go | 20 +++++++++------ zsub/zgroup.go | 4 +++ zsub/zsub.go | 4 +-- 7 files changed, 85 insertions(+), 20 deletions(-) diff --git a/main.go b/main.go index 46e8923..5b2c3cd 100644 --- a/main.go +++ b/main.go @@ -9,11 +9,14 @@ import ( "zhub/zsub" ) -func main() { - server := true - confPath := "app.conf" - addr := "" +var ( + dir, _ = os.Getwd() + confPath = dir + "/app.ini" // 配置文件地址 + server = true + addr = "" // 服务地址 +) +func main() { for _, arg := range os.Args[1:] { if strings.EqualFold(arg, "cli") { server = false @@ -35,7 +38,7 @@ func main() { switch os.Args[2] { case "timer": cli.Cmd("reload-timer") - case "shutdown": + case "shutdown", "stop": cli.Cmd("shutdown") } cli.Close() diff --git a/pkg.bat b/pkg.bat index c1d7da7..6d491bb 100644 --- a/pkg.bat +++ b/pkg.bat @@ -1,6 +1,6 @@ SET GOOS=linux SET GOARCH=amd64 -go build -o zhub.sh -ldflags "-s -w" ./main.go +go build -o zhub.sh -ldflags "-s -w" upx -9 zhub.sh rem scp zhub.sh dev:/opt/zhub diff --git a/zsub/config.go b/zsub/config.go index 326defe..6c23de4 100644 --- a/zsub/config.go +++ b/zsub/config.go @@ -10,12 +10,14 @@ import ( ) var ( + dir, _ = os.Getwd() config = make(map[string]string) LogDebug bool - DataDir = "" + datadir = dir + "/data" ) func LoadConf(path string) { + //log.Println("APP_CONF =", path) f, err := os.Open(path) if err != nil { log.Panicln(err) @@ -55,8 +57,14 @@ func LoadConf(path string) { } LogDebug = strings.EqualFold(config["log.level"], "debug") - DataDir = GetStr("data.dir", "data") - os.MkdirAll(DataDir, os.ModeDir) + + datadir = GetStr("data.dir", "${APP_HOME}/data") + datadir = strings.ReplaceAll(datadir, "${APP_HOME}", dir) + + os.MkdirAll(datadir, os.ModeDir) + os.Chmod(datadir, 0777) + + initLog() } func GetStr(key string, def string) string { @@ -77,3 +85,49 @@ func GetInt(key string, def int) int { } return n } + +func initLog() { + defer func() { + if r := recover(); r != nil { + log.Println("initLog Err:", r) + } + }() + + file, err := os.OpenFile("zhub.log", os.O_CREATE|os.O_APPEND|os.O_SYNC|os.O_RDWR, 0777) + if err != nil { + log.Println(err) + } + log.SetOutput(file) + + /* + if strings.EqualFold(GetStr("log.handlers", "console"), "console") { + return + } + + var logfile = GetStr("log.pattern", "${APP_HOME}/logs-200601/log-20060102.log") + + c := cron.New() + fun := func() { + now := time.Now() + logfile := strings.ReplaceAll(logfile, "${APP_HOME}", dir) + logfile = now.Format(logfile) + + if strings.LastIndexAny(logfile, "/") > 0 { + logdir := logfile[0:strings.LastIndexAny(logfile, "/")] + os.MkdirAll(logdir, 0666) + } + + file, err := os.OpenFile(logfile, os.O_CREATE|os.O_APPEND|os.O_SYNC|os.O_RDWR, 0777) + if err != nil { + log.Println(err) + } + + //log.Println("SET LOG_FILE =", file.Name()) + log.SetOutput(file) + } + fun() + + c.AddFunc("0 0 * * * *", fun) + go c.Run() + */ +} diff --git a/zsub/msg-consumer.go b/zsub/msg-consumer.go index 900bd94..7d9e3be 100644 --- a/zsub/msg-consumer.go +++ b/zsub/msg-consumer.go @@ -30,7 +30,7 @@ func msgAccept(v Message) { } if LogDebug { - log.Println("[", v.Conn.sn, "] rcmd: "+strings.Join(rcmd, " ")) + log.Printf("[%d] rcmd: %s\n", v.Conn.sn, strings.Join(rcmd, " ")) } if !c.auth && !strings.EqualFold("auth", rcmd[0]) && strings.EqualFold(GetStr("service.auth", "0"), "1") { c.send("-Auth: NOAUTH Authentication required:" + rcmd[0]) diff --git a/zsub/zdb.go b/zsub/zdb.go index 3f97d7e..13bd0c3 100644 --- a/zsub/zdb.go +++ b/zsub/zdb.go @@ -38,6 +38,12 @@ func Append(str string, fileName string) { // 数据持久化 func (s *ZSub) dataStorage() { + defer func() { + if r := recover(); r != nil { + log.Println("dataStorage Recovered:", r) + } + }() + s.Lock() defer s.Unlock() // ========================== delay save =========================== @@ -49,11 +55,11 @@ func (s *ZSub) dataStorage() { s.delayup = false }() - err := os.Remove(DataDir + "/delay.z") + err := os.Remove(datadir + "/delay.z") if err != nil { log.Println(err) } - file, err := os.OpenFile(DataDir+"/delay.z", os.O_CREATE|os.O_WRONLY, os.ModeAppend) + file, err := os.OpenFile(datadir+"/delay.z", os.O_CREATE|os.O_WRONLY, os.ModeAppend) if err != nil { fmt.Println(err) } @@ -74,7 +80,7 @@ func (s *ZSub) dataStorage() { // ========================== lock save =========================== func() { - err := os.Remove(DataDir + "/lock.z") + err := os.Remove(datadir + "/lock.z") if err != nil { log.Println(err) } @@ -85,12 +91,12 @@ func (s *ZSub) dataStorage() { break // 只记录获得锁的记录 } } - Append(str, DataDir+"/lock.z") + Append(str, datadir+"/lock.z") }() } func (s *ZSub) loadDelay() { - f, err := os.Open(DataDir + "/delay.z") + f, err := os.Open(datadir + "/delay.z") if err != nil { return } @@ -125,7 +131,7 @@ func (s *ZSub) loadDelay() { } func (s *ZSub) loadLock() { - f, err := os.Open(DataDir + "/lock.z") + f, err := os.Open(datadir + "/lock.z") if err != nil { return } @@ -171,7 +177,7 @@ var ( ) func init() { - LoadConf("app.conf") + //LoadConf("app.conf") /* _db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8", GetStr("ztimer.db.user", "root"), diff --git a/zsub/zgroup.go b/zsub/zgroup.go index 210db29..3cc87ae 100644 --- a/zsub/zgroup.go +++ b/zsub/zgroup.go @@ -1,6 +1,7 @@ package zsub import ( + "log" "sync" "sync/atomic" ) @@ -37,9 +38,12 @@ func (g *ZGroup) appendTo(c *ZConn) { err := c.send("message", topic, msg) if err != nil { // 失败处理 + log.Println("topic send err:", err) g.chMsg <- msg return } + + //log.Printf("[ %d ] topic send: %s %s\n", c.sn, topic, msg) atomic.AddInt32(&g.offset, 1) case <-c.stoped: return diff --git a/zsub/zsub.go b/zsub/zsub.go index e3a0ef7..0460a6a 100644 --- a/zsub/zsub.go +++ b/zsub/zsub.go @@ -251,8 +251,6 @@ StartServer 2、init server */ func StartServer(addr string) { - GetStr("data.dir", "data") - go func() { for { fun, ok := <-funChan @@ -273,7 +271,7 @@ func StartServer(addr string) { if err != nil { log.Fatal(err) } - log.Println("zhub.server = ", addr) + log.Println("zhub.server =", addr) for { conn, err := listen.Accept()