diff --git a/client/operation.go b/client/operation.go index 6687ce6..addd1ff 100644 --- a/client/operation.go +++ b/client/operation.go @@ -289,7 +289,7 @@ func (hc *houstonClient) launch(meta *procmeta) error { return err } - stdReader := func(jobName string, r io.ReadCloser, index int, logfile string) { + stdReader := func(jobName string, r io.ReadCloser, index int, logfilePath string) { defer func() { reco := recover() if reco != nil { @@ -311,8 +311,7 @@ func (hc *houstonClient) launch(meta *procmeta) error { reader := bufio.NewReader(r) var logWriter func([]byte) - if len(logfile) > 0 { - logfilePath := path.Join("logs", logfile) + if len(logfilePath) > 0 { targetFile, err := os.OpenFile(logfilePath, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666) if err == nil && targetFile != nil { defer func() { @@ -333,7 +332,7 @@ func (hc *houstonClient) launch(meta *procmeta) error { } } } else { - logger.Println("failed to create log file :", logfilePath) + logger.Println("failed to create log file :", logfilePath, err) } } else { logWriter = func(buff []byte) { @@ -458,6 +457,12 @@ func (hc *houstonClient) launch(meta *procmeta) error { return v }) + if len(evalfile) > 0 { + logfolder := path.Join(path.Dir(meta.cmd.Args[0]), "logs") + os.MkdirAll(logfolder, 0666) + evalfile = path.Join(logfolder, evalfile) + } + go stdReader(meta.name, stdout, index, evalfile) logger.Println("startChildProcess :", meta.cmd.Args)