您可以尝试使用docker.ContainerLogs方法的types.ContainerLogsOptions参数来控制返回的日志流。具体来说,您可以使用types.ContainerLogsOptions.Stream选项来请求实时日志流。以下是一个示例代码:

package main

import (
	"context"
	"fmt"
	"io"
	"time"

	"github.com/docker/docker/api/types"
	"github.com/docker/docker/client"
)

func main() {
	cli, err := client.NewEnvClient()
	if err != nil {
		panic(err)
	}

	options := types.ContainerLogsOptions{
		Follow:    true,
		ShowStdout: true,
		ShowStderr: true,
		Timestamps: true,
	}

	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()

	reader, err := cli.ContainerLogs(ctx, "my-container-id", options)
	if err != nil {
		panic(err)
	}

	defer reader.Close()

	buf := make([]byte, 4096)
	for {
		n, err := reader.Read(buf)
		if err != nil {
			if err == io.EOF {
				break
			}
			panic(err)
		}
		fmt.Print(string(buf[:n]))
	}
}

在上面的代码中,我们使用types.ContainerLogsOptions结构体来配置日志选项,然后使用cli.ContainerLogs方法来获取日志流。我们使用io.Reader接口来读取日志流,并将其打印到控制台。请注意,我们使用options.Follow选项来请求实时日志流。如果您不需要实时日志流,可以将其设置为false


原文地址: http://www.cveoy.top/t/topic/drX0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录