@@ -542,24 +542,48 @@ func (f *FileService) ReadLogByLine(req request.FileReadByLineReq) (*response.Fi
542542 logFilePath = path .Join (global .Dir .DataDir , fmt .Sprintf ("apps/mariadb/%s/db/data/1Panel-slow.log" , req .Name ))
543543 }
544544
545- lines , isEndOfFile , total , err := files . ReadFileByLine (logFilePath , req . Page , req . PageSize , req . Latest )
545+ file , err := os . Open (logFilePath )
546546 if err != nil {
547547 return nil , err
548548 }
549- if req .Latest && req .Page == 1 && len (lines ) < 1000 && total > 1 {
550- preLines , _ , _ , err := files .ReadFileByLine (logFilePath , total - 1 , req .PageSize , false )
549+ defer file .Close ()
550+ stat , err := file .Stat ()
551+ if err != nil {
552+ return nil , err
553+ }
554+ var (
555+ lines []string
556+ isEndOfFile bool
557+ total int
558+ scope string
559+ )
560+
561+ if stat .Size () > 500 * 1024 * 1024 {
562+ lines , err = files .TailFromEnd (logFilePath , req .PageSize )
563+ isEndOfFile = true
564+ scope = "tail"
565+ } else {
566+ lines , isEndOfFile , total , err = files .ReadFileByLine (logFilePath , req .Page , req .PageSize , req .Latest )
551567 if err != nil {
552568 return nil , err
553569 }
554- lines = append (preLines , lines ... )
570+ if req .Latest && req .Page == 1 && len (lines ) < 1000 && total > 1 {
571+ preLines , _ , _ , err := files .ReadFileByLine (logFilePath , total - 1 , req .PageSize , false )
572+ if err != nil {
573+ return nil , err
574+ }
575+ lines = append (preLines , lines ... )
576+ }
577+ scope = "page"
555578 }
579+
556580 res := & response.FileLineContent {
557- Content : strings .Join (lines , "\n " ),
558581 End : isEndOfFile ,
559582 Path : logFilePath ,
560583 Total : total ,
561584 TaskStatus : taskStatus ,
562585 Lines : lines ,
586+ Scope : scope ,
563587 }
564588 return res , nil
565589}
0 commit comments