From 3351429515256bbb510b95d5b9eb6c01d045c690 Mon Sep 17 00:00:00 2001 From: dengsgo Date: Thu, 2 Jan 2020 17:25:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=20log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deamon.go | 8 ++++---- fileboy.go | 53 +++++++++++++++++++++++++---------------------------- notifer.go | 11 +++++------ taskman.go | 30 +++++++++++------------------- util.go | 16 ++++++++++++++++ 5 files changed, 61 insertions(+), 57 deletions(-) diff --git a/deamon.go b/deamon.go index 60dc762..4afd284 100644 --- a/deamon.go +++ b/deamon.go @@ -14,15 +14,15 @@ func getPidFile() string { func runAsDeamon() (int, error) { if runtime.GOOS == "windows" { - logAndExit(PreError, "daemons mode cannot run on windows.") + logAndExit("daemons mode cannot run on windows.") } err := stopDeamon() if err != nil { - logAndExit(PreError, err) + logAndExit(err) } _, err = exec.LookPath("fileboy") if err != nil { - logAndExit(PreError, "cannot found `fileboy` command in the PATH") + logAndExit("cannot found `fileboy` command in the PATH") } deamon := exec.Command("fileboy") deamon.Dir = projectFolder @@ -30,7 +30,7 @@ func runAsDeamon() (int, error) { deamon.Stdout = os.Stdout err = deamon.Start() if err != nil { - logAndExit(PreError, err) + logAndExit(err) } pid := deamon.Process.Pid if pid != 0 { diff --git a/fileboy.go b/fileboy.go index 9d2d01e..e7f3704 100644 --- a/fileboy.go +++ b/fileboy.go @@ -18,9 +18,6 @@ import ( const ( Version = 1 - PreError = "ERROR:" - PreWarn = "Warn:" - InstExecWhenStart = "exec-when-start" InstShouldFinish = "should-finish" ) @@ -56,16 +53,16 @@ func parseConfig() { cfg = new(FileGirl) fc, err := ioutil.ReadFile(getFileGirlPath()) if err != nil { - log.Println(PreError, "The filegirl.yaml file in", projectFolder, "is not exist! ", err) + logError("The filegirl.yaml file in", projectFolder, "is not exist! ", err) fmt.Print(firstRunHelp) logAndExit("Fileboy unable to run.") } err = yaml.Unmarshal(fc, cfg) if err != nil { - logAndExit(PreError, "Parsed filegirl.yaml failed: ", err) + logAndExit("Parsed filegirl.yaml failed: ", err) } if cfg.Core.Version > Version { - logAndExit(PreError, "Current fileboy support max version : ", Version) + logAndExit("Current fileboy support max version : ", Version) } // init map cfg.Monitor.TypesMap = map[string]bool{} @@ -108,15 +105,15 @@ func eventDispatcher(event fsnotify.Event) { } func addWatcher() { - log.Println("collecting directory information...") + logInfo("collecting directory information...") dirsMap := map[string]bool{} for _, dir := range cfg.Monitor.IncludeDirs { darr := dirParse2Array(dir) if len(darr) < 1 || len(darr) > 2 { - logAndExit(PreError, "filegirl section monitor dirs is error. ", dir) + logAndExit("filegirl section monitor dirs is error. ", dir) } if strings.HasPrefix(darr[0], "/") { - logAndExit(PreError, "dirs must be relative paths ! err path:", dir) + logAndExit("dirs must be relative paths ! err path:", dir) } if darr[0] == "." { if len(darr) == 2 && darr[1] == "*" { @@ -146,7 +143,7 @@ func addWatcher() { } for _, dir := range cfg.Monitor.ExceptDirs { if dir == "." { - logAndExit(PreError, "exceptDirs must is not project root path ! err path:", dir) + logAndExit("exceptDirs must is not project root path ! err path:", dir) } p := projectFolder + "/" + dir delete(dirsMap, p) @@ -155,14 +152,14 @@ func addWatcher() { }) } for dir := range dirsMap { - log.Println("watcher add -> ", dir) + logInfo("watcher add -> ", dir) err := watcher.Add(dir) if err != nil { - logAndExit(PreError, err) + logAndExit(err) } } - log.Println("total monitored dirs: " + strconv.Itoa(len(dirsMap))) - log.Println("fileboy is ready.") + logInfo("total monitored dirs: " + strconv.Itoa(len(dirsMap))) + logInfo("fileboy is ready.") cfg.Monitor.DirsMap = dirsMap } @@ -191,7 +188,7 @@ func initWatcher() { if !ok { return } - log.Println(PreError, err) + logError(err) } } }() @@ -226,9 +223,9 @@ func watchChangeHandler(event fsnotify.Event) { err := watcher.Add(event.Name) if err == nil { do = true - log.Println("watcher add -> ", event.Name) + logInfo("watcher add -> ", event.Name) } else { - log.Println(PreWarn, "watcher add faild:", event.Name, err) + logWarn("watcher add faild:", event.Name, err) } } @@ -241,9 +238,9 @@ func watchChangeHandler(event fsnotify.Event) { _ = watcher.Remove(event.Name) err := watcher.Add(event.Name) if err == nil { - log.Println("watcher add -> ", event.Name) + logInfo("watcher add -> ", event.Name) } else { - log.Println(PreWarn, "watcher add faild:", event.Name, err) + logWarn("watcher add faild:", event.Name, err) } } } @@ -267,30 +264,30 @@ func parseArgs() { case "deamon": pid, err := runAsDeamon() if err != nil { - logAndExit(PreError, err) + logAndExit(err) } - log.Println("PID:", pid) - log.Println("fileboy is ready. the main process will run as a daemons") + logInfo("PID:", pid) + logInfo("fileboy is ready. the main process will run as a daemons") return case "stop": err := stopDeamon() if err != nil { - logAndExit(PreError, err) + logAndExit(err) } - log.Println("fileboy daemon is stoped.") + logInfo("fileboy daemon is stoped.") return case "init": _, err := ioutil.ReadFile(getFileGirlPath()) if err == nil { - log.Println(PreError, "Profile filegirl.yaml already exists.") + logError("Profile filegirl.yaml already exists.") logAndExit("If you want to regenerate filegirl.yaml, delete it first") } err = ioutil.WriteFile(getFileGirlPath(), []byte(exampleFileGirl), 0644) if err != nil { - log.Println(PreError, "Profile filegirl.yaml create failed! ", err) + logError("Profile filegirl.yaml create failed! ", err) return } - log.Println("Profile filegirl.yaml created ok") + logInfo("Profile filegirl.yaml created ok") return case "exec": parseConfig() @@ -301,7 +298,7 @@ func parseArgs() { case "help", "--help", "--h", "-h": fmt.Print(helpStr) default: - fmt.Println(PreError, "Unknown parameter, use 'fileboy help' to view available commands") + logAndExit("Unknown parameter, use 'fileboy help' to view available commands") } return default: diff --git a/notifer.go b/notifer.go index 656008a..5d50dc1 100644 --- a/notifer.go +++ b/notifer.go @@ -3,7 +3,6 @@ package main import ( "bytes" "encoding/json" - "log" "net/http" "strings" "time" @@ -35,7 +34,7 @@ func newNetNotifier(callUrl string) *NetNotifier { func (n *NetNotifier) Put(cf *changedFile) { if !n.CanPost { - log.Println(PreWarn, "notifier call url ignore. ", n.CallUrl) + logWarn("notifier call url ignore. ", n.CallUrl) return } n.dispatch(&postParams{ @@ -50,7 +49,7 @@ func (n *NetNotifier) Put(cf *changedFile) { func (n *NetNotifier) dispatch(params *postParams) { b, err := json.Marshal(params) if err != nil { - log.Println(PreError, "json.Marshal n.params. ", err) + logError("json.Marshal n.params. ", err) return } client := &http.Client{ @@ -58,14 +57,14 @@ func (n *NetNotifier) dispatch(params *postParams) { } req, err := http.NewRequest("POST", n.CallUrl, bytes.NewBuffer(b)) if err != nil { - log.Println(PreError, "http.NewRequest. ", err) + logError("http.NewRequest. ", err) return } req.Header.Set("Content-Type", "application/json;charset=UTF-8") req.Header.Set("User-Agent", "FileBoy Net Notifier v1.12") resp, err := client.Do(req) if err != nil { - log.Println(PreError, "notifier call failed. err:", err) + logError("notifier call failed. err:", err) return } defer func() { @@ -76,5 +75,5 @@ func (n *NetNotifier) dispatch(params *postParams) { if resp.StatusCode >= 300 { // todo retry??? } - log.Println("notifier done .") + logInfo("notifier done .") } diff --git a/taskman.go b/taskman.go index 06b9c84..9727316 100644 --- a/taskman.go +++ b/taskman.go @@ -1,7 +1,6 @@ package main import ( - "log" "os" "os/exec" "sync" @@ -34,7 +33,7 @@ func newTaskMan(delay int, callUrl string) *TaskMan { if len(t.waitQueue) > 0 { cf := t.waitQueue[len(t.waitQueue)-1] if len(t.waitQueue) > 1 { - log.Println("Number of redundant tasks dropped:", len(t.waitQueue)-1) + logInfo("Number of redundant tasks dropped:", len(t.waitQueue)-1) } t.waitQueue = []*changedFile{} go t.preRun(cf) @@ -65,8 +64,8 @@ func (t *TaskMan) Put(cf *changedFile) { t.waitChan <- true return } - log.Println("Waitting for the last task to finish") - log.Println("Number of waiting tasks:", len(t.waitQueue)) + logInfo("Waitting for the last task to finish") + logInfo("Number of waiting tasks:", len(t.waitQueue)) } else { t.preRun(cf) } @@ -76,27 +75,20 @@ func (t *TaskMan) Put(cf *changedFile) { func (t *TaskMan) preRun(cf *changedFile) { if t.cmd != nil && t.cmd.Process != nil { if err := t.cmd.Process.Kill(); err != nil { - log.Println("stop old process ") - log.Println(PreWarn, "stopped err, reason:", err) + logInfo("stop old process ") + logWarn("stopped err, reason:", err) } } go t.run(cf) go t.notifier.Put(cf) } -func (t *TaskMan) waitFinish() { - log.Println("prostate", t.cmd.Process.Pid) - if t.cmd.ProcessState != nil && !t.cmd.ProcessState.Exited() { - - } -} - func (t *TaskMan) run(cf *changedFile) { t.runLock.Lock() defer t.runLock.Unlock() for i := 0; i < len(cfg.Command.Exec); i++ { carr := cmdParse2Array(cfg.Command.Exec[i], cf) - log.Println("EXEC", carr) + logInfo("EXEC", carr) t.cmd = exec.Command(carr[0], carr[1:]...) //cmd.SysProcAttr = &syscall.SysProcAttr{CreationFlags: syscall.CREATE_UNICODE_ENVIRONMENT} t.cmd.Stdin = os.Stdin @@ -106,19 +98,19 @@ func (t *TaskMan) run(cf *changedFile) { t.cmd.Env = os.Environ() err := t.cmd.Start() if err != nil { - log.Println(PreError, "run command", carr, "error. ", err) + logError("run command", carr, "error. ", err) break } err = t.cmd.Wait() if err != nil { - log.Println(PreWarn, "command exec failed:", carr, err) + logWarn("command exec failed:", carr, err) break } if t.cmd.Process != nil { err := t.cmd.Process.Kill() - log.Println(t.cmd.ProcessState) + logInfo(t.cmd.ProcessState) if t.cmd.ProcessState != nil && !t.cmd.ProcessState.Exited() { - log.Println(PreError, "command cannot stop!", carr, err) + logError("command cannot stop!", carr, err) } } } @@ -126,5 +118,5 @@ func (t *TaskMan) run(cf *changedFile) { t.cmd = nil t.waitChan <- true } - log.Println("EXEC end") + logInfo("EXEC end") } diff --git a/util.go b/util.go index 1bf8e52..c731ae5 100644 --- a/util.go +++ b/util.go @@ -81,7 +81,23 @@ func inStrArray(s string, arr []string) bool { return false } +func logInfo(v ...interface{}) { + v = append([]interface{}{"I:"}, v...) + log.Println(v...) +} + +func logWarn(v ...interface{}) { + v = append([]interface{}{"W:"}, v...) + log.Println(v...) +} + +func logError(v ...interface{}) { + v = append([]interface{}{"E:"}, v...) + log.Println(v...) +} + func logAndExit(v ...interface{}) { + v = append([]interface{}{"O:"}, v...) log.Println(v...) os.Exit(15) }