로그 append와 업로드를 분리

This commit is contained in:
2024-11-07 13:47:53 +09:00
parent 4d6665b64a
commit 2ddbae07b2

View File

@ -48,19 +48,14 @@ func lastExecutionArgs(verpath string) []string {
var errUploadZipLogFailed = errors.New("not ok") var errUploadZipLogFailed = errors.New("not ok")
func (hc *houstonClient) uploadRawLogFile(logFile string, name string, version string) error { func (hc *houstonClient) uploadLogFile(logFile string, name string, version string) error {
t, err := times.Stat(logFile)
if err != nil {
return err
}
file, err := os.Open(logFile) file, err := os.Open(logFile)
if err != nil { if err != nil {
return err return err
} }
if file == nil { if file == nil {
return errors.New("uploadRawLogFile failed : " + logFile) return errors.New("uploadLogFile failed : " + logFile)
} }
defer file.Close() defer file.Close()
@ -74,7 +69,7 @@ func (hc *houstonClient) uploadRawLogFile(logFile string, name string, version s
// createTime := file. // createTime := file.
req.Header.Set("Houston-Service-Name", name) req.Header.Set("Houston-Service-Name", name)
req.Header.Set("Houston-Service-Version", version) req.Header.Set("Houston-Service-Version", version)
req.Header.Set("Houston-Service-Filename", t.BirthTime().UTC().Format(time.DateOnly)+"."+hn+path.Ext(logFile)) req.Header.Set("Houston-Service-Filename", path.Base(logFile)+"."+hn+path.Ext(logFile))
req.Header.Set("Content-Type", "application/zip") req.Header.Set("Content-Type", "application/zip")
resp, err := http.DefaultClient.Do(req) resp, err := http.DefaultClient.Do(req)
if err != nil { if err != nil {
@ -89,25 +84,33 @@ func (hc *houstonClient) uploadRawLogFile(logFile string, name string, version s
return nil return nil
} }
func (hc *houstonClient) uploadZipLogFile(zipFile string, name string, version string) error { func (hc *houstonClient) uploadToAppendLog(logFile string, name string, version string) error {
zf, err := os.Open(zipFile) t, err := times.Stat(logFile)
if err != nil { if err != nil {
return err return err
} }
if zf == nil { file, err := os.Open(logFile)
return errUploadZipLogFailed if err != nil {
return err
} }
defer zf.Close() if file == nil {
return errors.New("uploadRuploadLogFileawLogFile failed : " + logFile)
}
req, err := http.NewRequest("POST", hc.config.HttpAddress+"/upload", zf) defer file.Close()
req, err := http.NewRequest("POST", hc.config.HttpAddress+"/upload", file)
if err != nil { if err != nil {
logger.Println(err) logger.Println(err)
} }
hn, _ := os.Hostname()
// createTime := file.
req.Header.Set("Houston-Service-Name", name) req.Header.Set("Houston-Service-Name", name)
req.Header.Set("Houston-Service-Version", version) req.Header.Set("Houston-Service-Version", version)
req.Header.Set("Houston-Service-Filename", path.Base(filepath.ToSlash(zipFile))) req.Header.Set("Houston-Service-Filename", t.BirthTime().UTC().Format(time.DateOnly)+"."+hn+path.Ext(logFile))
req.Header.Set("Content-Type", "application/zip") req.Header.Set("Content-Type", "application/zip")
resp, err := http.DefaultClient.Do(req) resp, err := http.DefaultClient.Do(req)
if err != nil { if err != nil {
@ -385,15 +388,6 @@ func (hc *houstonClient) launch(meta *procmeta) error {
reader := bufio.NewReader(r) reader := bufio.NewReader(r)
readingMetric := false readingMetric := false
defer func() {
if targetFile != nil {
targetFile.Close()
targetFile = nil
hc.uploadRawLogFile(currentFilePath, meta.name, meta.version)
}
metricExporter.Shutdown()
}()
var metricBuffer []byte var metricBuffer []byte
wipeLogFile := func() { wipeLogFile := func() {
@ -401,10 +395,15 @@ func (hc *houstonClient) launch(meta *procmeta) error {
if targetFile != nil { if targetFile != nil {
targetFile.Close() targetFile.Close()
targetFile = nil targetFile = nil
hc.uploadRawLogFile(currentFilePath, meta.name, meta.version) go hc.uploadToAppendLog(currentFilePath, meta.name, meta.version)
} }
} }
defer func() {
wipeLogFile()
metricExporter.Shutdown()
}()
currentTime := time.Now().UTC() currentTime := time.Now().UTC()
for { for {
now := time.Now().UTC() now := time.Now().UTC()
@ -500,23 +499,19 @@ func (hc *houstonClient) launch(meta *procmeta) error {
} }
reader := bufio.NewReader(r) reader := bufio.NewReader(r)
defer func() {
if targetFile != nil {
targetFile.Close()
targetFile = nil
}
hc.uploadProcFiles(meta, "logs/*"+ext, true)
}()
wipeLogFile := func() { wipeLogFile := func() {
total = 0 total = 0
if targetFile != nil { if targetFile != nil {
targetFile.Close() targetFile.Close()
targetFile = nil targetFile = nil
go hc.uploadRawLogFile(currentFilePath, meta.name, meta.version) go hc.uploadToAppendLog(currentFilePath, meta.name, meta.version)
} }
} }
defer func() {
wipeLogFile()
}()
currentTime := time.Now().UTC() currentTime := time.Now().UTC()
for { for {
now := time.Now().UTC() now := time.Now().UTC()
@ -728,7 +723,7 @@ func (hc *houstonClient) uploadProcFiles(child *procmeta, filter string, deleteA
_, matches := findMatchFiles(hc.config.StorageRoot, child.name, child.version, filter) _, matches := findMatchFiles(hc.config.StorageRoot, child.name, child.version, filter)
go func() { go func() {
for _, filename := range matches { for _, filename := range matches {
if err := hc.uploadRawLogFile(filename, child.name, child.version); err != nil { if err := hc.uploadLogFile(filename, child.name, child.version); err != nil {
break break
} }
if deleteAfterUpload { if deleteAfterUpload {
@ -752,7 +747,7 @@ func (hc *houstonClient) uploadFiles(req *shared.UploadRequest) error {
_, matches := findMatchFiles(hc.config.StorageRoot, req.Name, req.Version, req.Filter) _, matches := findMatchFiles(hc.config.StorageRoot, req.Name, req.Version, req.Filter)
go func() { go func() {
for _, filename := range matches { for _, filename := range matches {
if err := hc.uploadRawLogFile(filename, req.Name, req.Version); err != nil { if err := hc.uploadLogFile(filename, req.Name, req.Version); err != nil {
break break
} }
os.Remove(filename) os.Remove(filename)