1package client // import "github.com/docker/docker/client" 2 3import ( 4 "context" 5 "io" 6 "net/url" 7 "time" 8 9 "github.com/docker/docker/api/types" 10 timetypes "github.com/docker/docker/api/types/time" 11) 12 13// TaskLogs returns the logs generated by a task in an io.ReadCloser. 14// It's up to the caller to close the stream. 15func (cli *Client) TaskLogs(ctx context.Context, taskID string, options types.ContainerLogsOptions) (io.ReadCloser, error) { 16 query := url.Values{} 17 if options.ShowStdout { 18 query.Set("stdout", "1") 19 } 20 21 if options.ShowStderr { 22 query.Set("stderr", "1") 23 } 24 25 if options.Since != "" { 26 ts, err := timetypes.GetTimestamp(options.Since, time.Now()) 27 if err != nil { 28 return nil, err 29 } 30 query.Set("since", ts) 31 } 32 33 if options.Timestamps { 34 query.Set("timestamps", "1") 35 } 36 37 if options.Details { 38 query.Set("details", "1") 39 } 40 41 if options.Follow { 42 query.Set("follow", "1") 43 } 44 query.Set("tail", options.Tail) 45 46 resp, err := cli.get(ctx, "/tasks/"+taskID+"/logs", query, nil) 47 if err != nil { 48 return nil, err 49 } 50 return resp.body, nil 51} 52