Skip to content

Commit

Permalink
Fix CaptureLogs to just capture stdout (#1550)
Browse files Browse the repository at this point in the history
  • Loading branch information
rfay committed Apr 29, 2019
1 parent 5940cdb commit be8505e
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 8 deletions.
45 changes: 41 additions & 4 deletions pkg/ddevapp/ddevapp.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ddevapp

import (
"bytes"
"fmt"
"github.com/drud/ddev/pkg/globalconfig"
"github.com/drud/ddev/pkg/nodeps"
Expand Down Expand Up @@ -902,10 +903,46 @@ func (app *DdevApp) Logs(service string, follow bool, timestamps bool, tailLines
// CaptureLogs returns logs for a site's given container.
// See docker.LogsOptions for more information about valid tailLines values.
func (app *DdevApp) CaptureLogs(service string, timestamps bool, tailLines string) (string, error) {
stdout := util.CaptureUserOut()
err := app.Logs(service, false, timestamps, tailLines)
out := stdout()
return out, err
client := dockerutil.GetDockerClient()

var container *docker.APIContainers
var err error
// Let people access ddev-router and ddev-ssh-agent logs as well.
if service == "ddev-router" || service == "ddev-ssh-agent" {
container, err = dockerutil.FindContainerByLabels(map[string]string{"com.docker.compose.service": service})
} else {
container, err = app.FindContainerByType(service)
}
if err != nil {
return "", err
}
if container == nil {
util.Warning("No running service container %s was found", service)
return "", nil
}

var out bytes.Buffer

logOpts := docker.LogsOptions{
Container: container.ID,
Stdout: true,
Stderr: true,
OutputStream: &out,
ErrorStream: &out,
Follow: false,
Timestamps: timestamps,
}

if tailLines != "" {
logOpts.Tail = tailLines
}

err = client.Logs(logOpts)
if err != nil {
return "", err
}

return out.String(), nil
}

// DockerEnv sets environment variables for a docker-compose run.
Expand Down
5 changes: 1 addition & 4 deletions pkg/ddevapp/ddevapp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2246,15 +2246,12 @@ func TestInternalAndExternalAccessToURL(t *testing.T) {

// TestCaptureLogs checks that app.CaptureLogs() works
func TestCaptureLogs(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip("Skipping TestCaptureLogs on windows, it sometimes hangs")
}
assert := asrt.New(t)

site := TestSites[0]
runTime := testcommon.TimeTrack(time.Now(), fmt.Sprintf("%s CaptureLogs", site.Name))

app := new(ddevapp.DdevApp)
app := ddevapp.DdevApp{}

err := app.Init(site.Dir)
assert.NoError(err)
Expand Down

0 comments on commit be8505e

Please sign in to comment.