MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / ReadByLine

Method ReadByLine

agent/app/service/task.go:55–109  ·  view source on GitHub ↗
(req request.TaskLogReadReq)

Source from the content-addressed store, hash-verified

53}
54
55func (u *TaskLogService) ReadByLine(req request.TaskLogReadReq) (*response.FileLineContent, error) {
56 opts := []repo.DBOption{}
57 if req.TaskID != "" {
58 opts = append(opts, taskRepo.WithByID(req.TaskID))
59 } else {
60 opts = append(opts, repo.WithOrderRuleBy("created_at", "desc"), repo.WithByType(req.TaskType), taskRepo.WithOperate(req.TaskOperate), taskRepo.WithResourceID(req.ResourceID))
61 }
62 taskModel, err := taskRepo.GetFirst(opts...)
63 if err != nil {
64 return nil, err
65 }
66
67 file, err := os.Open(taskModel.LogFile)
68 if err != nil {
69 return nil, err
70 }
71 defer file.Close()
72 stat, err := file.Stat()
73 if err != nil {
74 return nil, err
75 }
76
77 var (
78 lines []string
79 isEndOfFile bool
80 scope string
81 logFileRes *dto.LogFileRes
82 )
83 if stat.Size() > files.MaxReadFileSize {
84 lines, _ = files.TailFromEnd(taskModel.LogFile, req.PageSize)
85 isEndOfFile = true
86 scope = "tail"
87 } else {
88 logFileRes, err = files.ReadFileByLine(taskModel.LogFile, req.Page, req.PageSize, req.Latest)
89 if err != nil {
90 return nil, err
91 }
92 scope = "page"
93 lines = logFileRes.Lines
94 }
95
96 res := &response.FileLineContent{
97 End: isEndOfFile,
98 Path: taskModel.LogFile,
99 TaskStatus: taskModel.Status,
100 Lines: lines,
101 Scope: scope,
102 }
103 if logFileRes != nil {
104 res.TotalLines = logFileRes.TotalLines
105 res.Total = logFileRes.TotalPages
106 res.End = logFileRes.IsEndOfFile
107 }
108 return res, nil
109}
110
111func (u *TaskLogService) SyncForRestart() error {
112 return taskRepo.UpdateRunningTaskToFailed()

Callers

nothing calls this directly

Calls 9

ReadFileByLineMethod · 0.80
WithByIDMethod · 0.65
WithByTypeMethod · 0.65
WithOperateMethod · 0.65
WithResourceIDMethod · 0.65
GetFirstMethod · 0.65
CloseMethod · 0.65
SizeMethod · 0.65
StatMethod · 0.45

Tested by

no test coverage detected