logger.UseLogFile을 houston의 자식 프로세스에도 적용
This commit is contained in:
@ -272,30 +272,65 @@ func (hc *houstonClient) launch(meta *procmeta) error {
|
|||||||
thisFileSize := 0
|
thisFileSize := 0
|
||||||
logFileIndex := 0
|
logFileIndex := 0
|
||||||
|
|
||||||
logFileNamePrefix := makeLogFilePrefix(meta, index)
|
var logWriter func([]byte)
|
||||||
logFileName := fmt.Sprintf("%s_%d.log", logFileNamePrefix, logFileIndex)
|
if *logger.UseLogFile {
|
||||||
targetFile, err := os.Create(logFileName)
|
logFileNamePrefix := makeLogFilePrefix(meta, index)
|
||||||
if err != nil {
|
logFileName := fmt.Sprintf("%s_%d.log", logFileNamePrefix, logFileIndex)
|
||||||
logger.Println("failed to create log file :", logFileName)
|
targetFile, err := os.Create(logFileName)
|
||||||
return
|
if err != nil {
|
||||||
}
|
logger.Println("failed to create log file :", logFileName)
|
||||||
|
return
|
||||||
exef, _ := os.Executable()
|
|
||||||
var linkPath string
|
|
||||||
if index == 0 {
|
|
||||||
linkPath = path.Join(path.Dir(exef), path.Dir(logFileName), meta.name+".log")
|
|
||||||
} else {
|
|
||||||
linkPath = path.Join(path.Dir(exef), path.Dir(logFileName), fmt.Sprintf("%s_%d.log", meta.name, index))
|
|
||||||
}
|
|
||||||
|
|
||||||
os.Remove(linkPath)
|
|
||||||
os.Symlink(path.Base(filepath.ToSlash(targetFile.Name())), linkPath)
|
|
||||||
|
|
||||||
defer func() {
|
|
||||||
if targetFile != nil {
|
|
||||||
targetFile.Close()
|
|
||||||
}
|
}
|
||||||
}()
|
|
||||||
|
exef, _ := os.Executable()
|
||||||
|
var linkPath string
|
||||||
|
if index == 0 {
|
||||||
|
linkPath = path.Join(path.Dir(exef), path.Dir(logFileName), meta.name+".log")
|
||||||
|
} else {
|
||||||
|
linkPath = path.Join(path.Dir(exef), path.Dir(logFileName), fmt.Sprintf("%s_%d.log", meta.name, index))
|
||||||
|
}
|
||||||
|
|
||||||
|
os.Remove(linkPath)
|
||||||
|
os.Symlink(path.Base(filepath.ToSlash(targetFile.Name())), linkPath)
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
if targetFile != nil {
|
||||||
|
targetFile.Close()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
logWriter = func(buff []byte) {
|
||||||
|
for written := 0; written < len(buff); {
|
||||||
|
n, err := targetFile.Write(buff)
|
||||||
|
if err != nil {
|
||||||
|
logger.Println("write log file failed :", logFileName, err)
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
written += n
|
||||||
|
thisFileSize += n
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if thisFileSize > 5*1024*1024 {
|
||||||
|
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.Remove(linkPath)
|
||||||
|
os.Symlink(path.Base(filepath.ToSlash(targetFile.Name())), linkPath)
|
||||||
|
thisFileSize = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logWriter = func(buff []byte) {
|
||||||
|
os.Stdout.Write(buff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
readingMetric := false
|
readingMetric := false
|
||||||
var metricBuffer []byte
|
var metricBuffer []byte
|
||||||
@ -362,31 +397,7 @@ func (hc *houstonClient) launch(meta *procmeta) error {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
for written := 0; written < len(buff); {
|
logWriter(buff)
|
||||||
n, err := targetFile.Write(buff)
|
|
||||||
if err != nil {
|
|
||||||
logger.Println("write log file failed :", logFileName, err)
|
|
||||||
break
|
|
||||||
} else {
|
|
||||||
written += n
|
|
||||||
thisFileSize += n
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if thisFileSize > 5*1024*1024 {
|
|
||||||
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.Remove(linkPath)
|
|
||||||
os.Symlink(path.Base(filepath.ToSlash(targetFile.Name())), linkPath)
|
|
||||||
thisFileSize = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user