로그 append와 업로드를 분리
This commit is contained in:
@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user