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

Method ReadLogByLine

agent/app/service/file.go:1028–1163  ·  view source on GitHub ↗
(req request.FileReadByLineReq)

Source from the content-addressed store, hash-verified

1026}
1027
1028func (f *FileService) ReadLogByLine(req request.FileReadByLineReq) (*response.FileLineContent, error) {
1029 logFilePath := ""
1030 taskStatus := ""
1031 if len(req.Name) != 0 {
1032 safeName := path.Base(req.Name)
1033 if safeName != req.Name || strings.Contains(safeName, "..") {
1034 return nil, buserr.New("ErrInvalidParams")
1035 }
1036 }
1037 switch req.Type {
1038 case constant.TypeWebsite:
1039 website, err := websiteRepo.GetFirst(repo.WithByID(req.ID))
1040 if err != nil {
1041 return nil, err
1042 }
1043 logFilePath = GetSitePath(website, req.Name)
1044 case constant.TypePhp:
1045 php, err := runtimeRepo.GetFirst(context.Background(), repo.WithByID(req.ID))
1046 if err != nil {
1047 return nil, err
1048 }
1049 logFilePath = php.GetLogPath()
1050 case constant.TypeSSL:
1051 ssl, err := websiteSSLRepo.GetFirst(repo.WithByID(req.ID))
1052 if err != nil {
1053 return nil, err
1054 }
1055 logFilePath = ssl.GetLogPath()
1056 case constant.TypeSystem:
1057 fileName := ""
1058 if len(req.Name) == 0 {
1059 fileName = "1Panel.log"
1060 } else {
1061 if strings.HasSuffix(req.Name, time.Now().Format("2006-01-02")) {
1062 fileName = "1Panel.log"
1063 if strings.HasPrefix(req.Name, "Core-") {
1064 fileName = "1Panel-Core.log"
1065 }
1066 } else {
1067 fileName = "1Panel-" + req.Name + ".log"
1068 }
1069 }
1070 logFilePath = path.Join(global.Dir.DataDir, "log", fileName)
1071 if _, err := os.Stat(logFilePath); err != nil {
1072 fileGzPath := path.Join(global.Dir.DataDir, "log", fileName+".gz")
1073 if _, err := os.Stat(fileGzPath); err != nil {
1074 return nil, buserr.New("ErrHttpReqNotFound")
1075 }
1076 if err := handleGunzip(fileGzPath); err != nil {
1077 return nil, fmt.Errorf("handle ungzip file %s failed, err: %v", fileGzPath, err)
1078 }
1079 }
1080 case constant.TypeTask:
1081 var opts []repo.DBOption
1082 if req.TaskID != "" {
1083 opts = append(opts, taskRepo.WithByID(req.TaskID))
1084 } else {
1085 opts = append(opts, repo.WithOrderRuleBy("created_at", "desc"), repo.WithByType(req.TaskType), taskRepo.WithOperate(req.TaskOperate), taskRepo.WithResourceID(req.ResourceID))

Callers

nothing calls this directly

Calls 15

GetSitePathFunction · 0.85
GetSlowLogPathMethod · 0.80
ReadFileByLineMethod · 0.80
handleGunzipFunction · 0.70
GetFirstMethod · 0.65
WithByIDMethod · 0.65
WithByTypeMethod · 0.65
WithOperateMethod · 0.65
WithResourceIDMethod · 0.65
GetMethod · 0.65
WithByKeyMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected