mirror of
https://github.com/samuelncui/yatm.git
synced 2025-12-23 06:15:22 +00:00
33 lines
761 B
Go
33 lines
761 B
Go
package apis
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
|
|
"github.com/samuelncui/yatm/entity"
|
|
)
|
|
|
|
func (api *API) JobGetLog(ctx context.Context, req *entity.JobGetLogRequest) (*entity.JobGetLogReply, error) {
|
|
reader, err := api.exe.NewLogReader(req.JobId)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("open log fail, %w", err)
|
|
}
|
|
if reader == nil {
|
|
return &entity.JobGetLogReply{Logs: []byte{}}, nil
|
|
}
|
|
|
|
if req.Offset != nil {
|
|
if _, err := reader.Seek(*req.Offset, 0); err != nil {
|
|
return nil, fmt.Errorf("seek log file fail, offset= %d, %w", req.Offset, err)
|
|
}
|
|
}
|
|
|
|
buf, err := io.ReadAll(reader)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("read log fail, %w", err)
|
|
}
|
|
|
|
return &entity.JobGetLogReply{Logs: buf, Offset: req.GetOffset() + int64(len(buf))}, nil
|
|
}
|