| @@ -8,6 +8,7 @@ package repo | |||
| import ( | |||
| "bufio" | |||
| "encoding/json" | |||
| "fmt" | |||
| "io" | |||
| "net/http" | |||
| "os" | |||
| @@ -413,41 +414,37 @@ func CloudbrainGetLog(ctx *context.Context) { | |||
| } | |||
| lines := ctx.QueryInt("lines") | |||
| baseLine := ctx.Query("base_line") | |||
| var result map[string]interface{} | |||
| if baseLine == "" { | |||
| re := getLastLogFromModelDir(job.JobName, lines) | |||
| ctx.JSON(http.StatusOK, re) | |||
| return | |||
| } | |||
| startLine := ctx.QueryInt("base_line") | |||
| endLine := startLine + lines | |||
| order := ctx.Query("order") | |||
| if order == "asc" { | |||
| endLine = startLine | |||
| startLine = endLine - lines | |||
| if startLine < 0 { | |||
| startLine = 0 | |||
| result = getLastLogFromModelDir(job.JobName, lines) | |||
| } else { | |||
| startLine := ctx.QueryInt("base_line") | |||
| endLine := startLine + lines | |||
| order := ctx.Query("order") | |||
| if order == "asc" { | |||
| endLine = startLine | |||
| startLine = endLine - lines | |||
| if startLine < 0 { | |||
| startLine = 0 | |||
| } | |||
| } | |||
| result = getLogFromModelDir(job.JobName, startLine, endLine) | |||
| if result == nil { | |||
| log.Error("GetJobLog failed: %v", err, ctx.Data["MsgID"]) | |||
| ctx.ServerError(err.Error(), err) | |||
| return | |||
| } | |||
| } | |||
| result := getLogFromModelDir(job.JobName, startLine, endLine) | |||
| if result == nil { | |||
| log.Error("GetJobLog failed: %v", err, ctx.Data["MsgID"]) | |||
| ctx.ServerError(err.Error(), err) | |||
| return | |||
| } | |||
| re := map[string]interface{}{ | |||
| "JobID": ID, | |||
| "LogFileName": result["FileName"], | |||
| "StartLine": startLine, | |||
| "EndLine": result["endLine"], | |||
| "StartLine": result["StartLine"], | |||
| "EndLine": result["EndLine"], | |||
| "Content": result["Content"], | |||
| "Lines": result["lines"], | |||
| "Lines": result["Lines"], | |||
| "CanLogDownload": result["FileName"] != "", | |||
| } | |||
| //result := CloudbrainGetLogByJobId(job.JobID, job.JobName) | |||
| ctx.JSON(http.StatusOK, re) | |||
| } | |||
| @@ -487,12 +484,13 @@ func getLastLogFromModelDir(jobName string, lines int) map[string]interface{} { | |||
| fileName := "" | |||
| count := 0 | |||
| allLines := 0 | |||
| startLine := 0 | |||
| for _, file := range files { | |||
| if strings.HasSuffix(file.FileName, "log.txt") { | |||
| fileName = file.FileName | |||
| path := storage.GetMinioPath(jobName+"/model/", file.FileName) | |||
| allLines = getAllLineFromFile(path) | |||
| startLine := allLines - 50 | |||
| startLine = allLines - lines | |||
| if startLine < 0 { | |||
| startLine = 0 | |||
| } | |||
| @@ -504,7 +502,6 @@ func getLastLogFromModelDir(jobName string, lines int) map[string]interface{} { | |||
| r := bufio.NewReader(reader) | |||
| for i := 0; i < allLines; i++ { | |||
| line, error := r.ReadString('\n') | |||
| log.Info("line=" + line) | |||
| if error == io.EOF { | |||
| log.Info("read file completed.") | |||
| break | |||
| @@ -515,6 +512,7 @@ func getLastLogFromModelDir(jobName string, lines int) map[string]interface{} { | |||
| } | |||
| if error == nil { | |||
| if i >= startLine { | |||
| log.Info("i=" + fmt.Sprint(i)) | |||
| re = re + line | |||
| } | |||
| } | |||
| @@ -527,11 +525,12 @@ func getLastLogFromModelDir(jobName string, lines int) map[string]interface{} { | |||
| } | |||
| return map[string]interface{}{ | |||
| "JobName": jobName, | |||
| "Content": re, | |||
| "FileName": fileName, | |||
| "lines": count, | |||
| "endLine": allLines, | |||
| "JobName": jobName, | |||
| "Content": re, | |||
| "FileName": fileName, | |||
| "Lines": count, | |||
| "EndLine": allLines, | |||
| "StartLine": startLine, | |||
| } | |||
| } | |||
| @@ -583,11 +582,12 @@ func getLogFromModelDir(jobName string, startLine int, endLine int) map[string]i | |||
| } | |||
| return map[string]interface{}{ | |||
| "JobName": jobName, | |||
| "Content": re, | |||
| "FileName": fileName, | |||
| "lines": count, | |||
| "endLine": fileEndLine, | |||
| "JobName": jobName, | |||
| "Content": re, | |||
| "FileName": fileName, | |||
| "Lines": count, | |||
| "EndLine": fileEndLine, | |||
| "StartLine": startLine, | |||
| } | |||
| } | |||