diff --git a/backend/services/log.go b/backend/services/log.go index a0ba0311..a83926f2 100644 --- a/backend/services/log.go +++ b/backend/services/log.go @@ -34,13 +34,17 @@ func GetLocalLog(logPath string) (fileBytes []byte, err error) { return nil, err } defer f.Close() - logBuf := make([]byte, 2048) + + const bufLen = 2048 + logBuf := make([]byte, bufLen) + off := int64(0) if fi.Size() > int64(len(logBuf)) { off = fi.Size() - int64(len(logBuf)) } n, err := f.ReadAt(logBuf, off) - // 到文件结尾会有EOF的报错 + + //到文件结尾会有EOF标识 if err != nil && err.Error() != "EOF" { log.Error(err.Error()) debug.PrintStack() diff --git a/backend/services/log_test.go b/backend/services/log_test.go index 0a52747c..a0b049c5 100644 --- a/backend/services/log_test.go +++ b/backend/services/log_test.go @@ -2,9 +2,11 @@ package services import ( "crawlab/config" + "fmt" "github.com/apex/log" . "github.com/smartystreets/goconvey/convey" "github.com/spf13/viper" + "os" "testing" ) @@ -20,3 +22,29 @@ func TestDeleteLogPeriodically(t *testing.T) { DeleteLogPeriodically() }) } + +func TestGetLocalLog(t *testing.T) { + //create a log file for test + logPath := "../logs/crawlab/test.log" + f, err := os.Create(logPath) + defer f.Close() + if err != nil { + fmt.Println(err.Error()) + + } else { + _, err = f.Write([]byte("This is for test")) + } + + Convey("Test GetLocalLog", t, func() { + Convey("Test response", func() { + logStr, err := GetLocalLog(logPath) + log.Info(string(logStr)) + fmt.Println(err) + So(err, ShouldEqual, nil) + + }) + }) + //delete the test log file + os.Remove(logPath) + +}