Пример #1
0
// Logs obtains the stderr and stdout log messages from the container.
func Logs(containerID string, stream StdStream) (string, error) {
	// Create the output buffer.
	buf := bytes.NewBuffer(nil)

	// Create the logs options.
	opts := docker.LogsOptions{
		Container:    containerID,
		Follow:       false,
		OutputStream: buf,
		ErrorStream:  buf,
	}

	if stream == StdStreamCombined {
		opts.Stdout = true
		opts.Stderr = true
	} else if stream == StdStreamOutput {
		opts.Stdout = true
		opts.Stderr = false
	} else if stream == StdStreamError {
		opts.Stdout = false
		opts.Stderr = true
	} else {
		return "", fmt.Errorf("invalid stream option!")
	}

	// Obtain the logs.
	err := Client.Logs(opts)
	if err != nil {
		return "", fmt.Errorf("failed to get container '%s' logs: %v", containerID, err)
	}

	return strings.TrimSpace(buf.String()), nil
}