최신 로그파일에 심볼릭 링크 생성

This commit is contained in:
2023-11-14 11:22:23 +09:00
parent 299a0a2bd3
commit 8d764c8d18

View File

@ -192,7 +192,7 @@ func prepareProcessLaunch(storageRoot string, req *shared.StartProcessRequest) *
return nil return nil
} }
func makeLogFile(meta *procmeta, idx int) string { func makeLogFilePrefix(meta *procmeta) string {
now := time.Now().UTC() now := time.Now().UTC()
ext := path.Ext(meta.args[0]) ext := path.Ext(meta.args[0])
nameonly := path.Base(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)] nameonly = nameonly[:len(nameonly)-len(ext)]
} }
ts := now.Format("2006-01-02T15-04-05") ts := now.Format("2006-01-02T15-04-05")
stdPrefix := path.Join(meta.cmd.Dir, "logs", fmt.Sprintf("%s_%s", nameonly, ts)) return path.Join(meta.cmd.Dir, "logs", fmt.Sprintf("%s_%s", nameonly, ts))
return fmt.Sprintf("%s_%d.log", stdPrefix, idx)
} }
func (hc *houstonClient) launch(meta *procmeta) error { func (hc *houstonClient) launch(meta *procmeta) error {
@ -209,10 +208,6 @@ func (hc *houstonClient) launch(meta *procmeta) error {
if err != nil { if err != nil {
return err return err
} }
stderr, err := meta.cmd.StderrPipe()
if err != nil {
return err
}
err = os.MkdirAll(path.Join(meta.cmd.Dir, "logs"), 0775) err = os.MkdirAll(path.Join(meta.cmd.Dir, "logs"), 0775)
if err != nil { if err != nil {
@ -233,7 +228,8 @@ func (hc *houstonClient) launch(meta *procmeta) error {
thisFileSize := 0 thisFileSize := 0
logFileIndex := 0 logFileIndex := 0
logFileName := makeLogFile(meta, logFileIndex) logFileNamePrefix := makeLogFilePrefix(meta)
logFileName := fmt.Sprintf("%s_%d.log", logFileNamePrefix, logFileIndex)
targetFile, err := os.Create(logFileName) targetFile, err := os.Create(logFileName)
if err != nil { if err != nil {
logger.Println("failed to create log file :", logFileName) logger.Println("failed to create log file :", logFileName)
@ -241,7 +237,10 @@ func (hc *houstonClient) launch(meta *procmeta) error {
} }
exef, _ := os.Executable() 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() { defer func() {
if targetFile != nil { 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++ logFileIndex++
logFileName := makeLogFile(meta, logFileIndex) logFileName = fmt.Sprintf("%s_%d.log", logFileNamePrefix, logFileIndex)
nextTargetFile, err := os.Create(logFileName) nextTargetFile, err := os.Create(logFileName)
if err != nil { if err != nil {
logger.Println("failed to create log file :", logFileName) logger.Println("failed to create log file :", logFileName)
} else { } else {
targetFile.Close() targetFile.Close()
targetFile = nextTargetFile 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 thisFileSize = 0
} }
} }
} }
} }
go stdReader(stderr)
go stdReader(stdout) go stdReader(stdout)
logger.Println("startChildProcess :", meta.cmd.Args) logger.Println("startChildProcess :", meta.cmd.Args)