최신 로그파일에 심볼릭 링크 생성
This commit is contained in:
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user