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