diff --git a/client/operation.go b/client/operation.go index dcf04c7..21c482f 100644 --- a/client/operation.go +++ b/client/operation.go @@ -192,7 +192,7 @@ func prepareProcessLaunch(storageRoot string, req *shared.StartProcessRequest) * return nil } -func makeLogFile(meta *procmeta, idx int) string { +func makeLogFilePrefix(meta *procmeta) string { now := time.Now().UTC() ext := path.Ext(meta.args[0]) nameonly := path.Base(meta.args[0]) @@ -200,8 +200,7 @@ func makeLogFile(meta *procmeta, idx int) string { nameonly = nameonly[:len(nameonly)-len(ext)] } ts := now.Format("2006-01-02T15-04-05") - stdPrefix := path.Join(meta.cmd.Dir, "logs", fmt.Sprintf("%s_%s", nameonly, ts)) - return fmt.Sprintf("%s_%d.log", stdPrefix, idx) + return path.Join(meta.cmd.Dir, "logs", fmt.Sprintf("%s_%s", nameonly, ts)) } func (hc *houstonClient) launch(meta *procmeta) error { @@ -209,10 +208,6 @@ func (hc *houstonClient) launch(meta *procmeta) error { if err != nil { return err } - stderr, err := meta.cmd.StderrPipe() - if err != nil { - return err - } err = os.MkdirAll(path.Join(meta.cmd.Dir, "logs"), 0775) if err != nil { @@ -233,7 +228,8 @@ func (hc *houstonClient) launch(meta *procmeta) error { thisFileSize := 0 logFileIndex := 0 - logFileName := makeLogFile(meta, logFileIndex) + logFileNamePrefix := makeLogFilePrefix(meta) + logFileName := fmt.Sprintf("%s_%d.log", logFileNamePrefix, logFileIndex) targetFile, err := os.Create(logFileName) if err != nil { logger.Println("failed to create log file :", logFileName) @@ -241,7 +237,10 @@ func (hc *houstonClient) launch(meta *procmeta) error { } exef, _ := os.Executable() - os.Symlink(path.Base(targetFile.Name()), path.Join(path.Dir(exef), path.Dir(logFileName), meta.name+".log")) + linkePath := path.Join(path.Dir(exef), path.Dir(logFileName), meta.name+".log") + + os.Remove(linkePath) + os.Symlink(path.Base(targetFile.Name()), linkePath) defer func() { if targetFile != nil { @@ -266,23 +265,23 @@ func (hc *houstonClient) launch(meta *procmeta) error { } } - if thisFileSize > 10*1024*1024 { + if thisFileSize > 5*1024*1024 { logFileIndex++ - logFileName := makeLogFile(meta, logFileIndex) + logFileName = fmt.Sprintf("%s_%d.log", logFileNamePrefix, logFileIndex) nextTargetFile, err := os.Create(logFileName) if err != nil { logger.Println("failed to create log file :", logFileName) } else { targetFile.Close() targetFile = nextTargetFile - os.Symlink(path.Base(targetFile.Name()), path.Join(path.Dir(exef), path.Dir(logFileName), meta.name+".log")) + os.Remove(linkePath) + os.Symlink(path.Base(targetFile.Name()), linkePath) thisFileSize = 0 } } } } - go stdReader(stderr) go stdReader(stdout) logger.Println("startChildProcess :", meta.cmd.Args)