Skip to content

Commit 2dc32bc

Browse files
authoredMar 25, 2025··
Tail OpenTelemetry container logs (#414)
1 parent 262b174 commit 2dc32bc

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed
 

‎internal/infra/open_telemetry.go

+24-4
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,19 @@ package infra
33
import (
44
"context"
55
"fmt"
6+
"io"
7+
"log"
8+
"os"
9+
"path"
10+
"path/filepath"
11+
612
"github.com/docker/docker/api/types"
713
"github.com/docker/docker/api/types/container"
814
"github.com/docker/docker/api/types/mount"
915
"github.com/docker/docker/api/types/network"
16+
"github.com/goware/prefixer"
1017
"github.com/moby/moby/client"
11-
"log"
12-
"os"
13-
"path"
14-
"path/filepath"
18+
"github.com/moby/moby/pkg/stdcopy"
1519
)
1620

1721
// CollectorImageName is the default Docker image used
@@ -101,7 +105,23 @@ func NewCollector(ctx context.Context, cli *client.Client, net *Networks, params
101105
}
102106

103107
return collector, nil
108+
}
109+
110+
func (c *Collector) TailLogs(ctx context.Context, cli *client.Client) {
111+
out, err := cli.ContainerLogs(ctx, c.containerID, container.LogsOptions{
112+
ShowStdout: true,
113+
ShowStderr: true,
114+
Follow: true,
115+
})
116+
if err != nil {
117+
return
118+
}
104119

120+
r, w := io.Pipe()
121+
go func() {
122+
_, _ = io.Copy(os.Stderr, prefixer.New(r, " otel | "))
123+
}()
124+
_, _ = stdcopy.StdCopy(w, w, out)
105125
}
106126

107127
// Close stops and removes the container.

‎internal/infra/run.go

+3
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,9 @@ func runContainers(ctx context.Context, params RunParams) (err error) {
394394
if err != nil {
395395
fmt.Println("Failed to create OpenTelemetry collector:", err)
396396
}
397+
if !params.Debug {
398+
go collector.TailLogs(ctx, cli)
399+
}
397400
defer collector.Close()
398401
}
399402

0 commit comments

Comments
 (0)
Please sign in to comment.