로그 append와 업로드를 분리
This commit is contained in:
@ -48,19 +48,14 @@ func lastExecutionArgs(verpath string) []string {
|
||||
|
||||
var errUploadZipLogFailed = errors.New("not ok")
|
||||
|
||||
func (hc *houstonClient) uploadRawLogFile(logFile string, name string, version string) error {
|
||||
t, err := times.Stat(logFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
func (hc *houstonClient) uploadLogFile(logFile string, name string, version string) error {
|
||||
file, err := os.Open(logFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if file == nil {
|
||||
return errors.New("uploadRawLogFile failed : " + logFile)
|
||||
return errors.New("uploadLogFile failed : " + logFile)
|
||||
}
|
||||
|
||||
defer file.Close()
|
||||
@ -74,7 +69,7 @@ func (hc *houstonClient) uploadRawLogFile(logFile string, name string, version s
|
||||
// createTime := file.
|
||||
req.Header.Set("Houston-Service-Name", name)
|
||||
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")
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
@ -89,25 +84,33 @@ func (hc *houstonClient) uploadRawLogFile(logFile string, name string, version s
|
||||
return nil
|
||||
}
|
||||
|
||||
func (hc *houstonClient) uploadZipLogFile(zipFile string, name string, version string) error {
|
||||
zf, err := os.Open(zipFile)
|
||||
func (hc *houstonClient) uploadToAppendLog(logFile string, name string, version string) error {
|
||||
t, err := times.Stat(logFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if zf == nil {
|
||||
return errUploadZipLogFailed
|
||||
file, err := os.Open(logFile)
|
||||
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 {
|
||||
logger.Println(err)
|
||||
}
|
||||
|
||||
hn, _ := os.Hostname()
|
||||
// createTime := file.
|
||||
req.Header.Set("Houston-Service-Name", name)
|
||||
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")
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
@ -385,15 +388,6 @@ func (hc *houstonClient) launch(meta *procmeta) error {
|
||||
reader := bufio.NewReader(r)
|
||||
readingMetric := false
|
||||
|
||||
defer func() {
|
||||
if targetFile != nil {
|
||||
targetFile.Close()
|
||||
targetFile = nil
|
||||
hc.uploadRawLogFile(currentFilePath, meta.name, meta.version)
|
||||
}
|
||||
metricExporter.Shutdown()
|
||||
}()
|
||||
|
||||
var metricBuffer []byte
|
||||
|
||||
wipeLogFile := func() {
|
||||
@ -401,10 +395,15 @@ func (hc *houstonClient) launch(meta *procmeta) error {
|
||||
if targetFile != nil {
|
||||
targetFile.Close()
|
||||
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()
|
||||
for {
|
||||
now := time.Now().UTC()
|
||||
@ -500,23 +499,19 @@ func (hc *houstonClient) launch(meta *procmeta) error {
|
||||
}
|
||||
reader := bufio.NewReader(r)
|
||||
|
||||
defer func() {
|
||||
if targetFile != nil {
|
||||
targetFile.Close()
|
||||
targetFile = nil
|
||||
}
|
||||
hc.uploadProcFiles(meta, "logs/*"+ext, true)
|
||||
}()
|
||||
|
||||
wipeLogFile := func() {
|
||||
total = 0
|
||||
if targetFile != nil {
|
||||
targetFile.Close()
|
||||
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()
|
||||
for {
|
||||
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)
|
||||
go func() {
|
||||
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
|
||||
}
|
||||
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)
|
||||
go func() {
|
||||
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
|
||||
}
|
||||
os.Remove(filename)
|
||||
|
||||
Reference in New Issue
Block a user