-
-
Notifications
You must be signed in to change notification settings - Fork 601
[Bug]: -v enable logs which is not intuitive to control #2874
Description
Testcontainers version
0.34.0
Using the latest Testcontainers version?
Yes
Host OS
macOS
Host arch
ARM
Go version
1.23.2
Docker version
Client:
Version: 27.1.1
API version: 1.46
Go version: go1.21.12
Git commit: 6312585
Built: Tue Jul 23 19:54:12 2024
OS/Arch: darwin/arm64
Context: desktop-linux
Server: Docker Desktop 4.33.0 (160616)
Engine:
Version: 27.1.1
API version: 1.46 (minimum version 1.24)
Go version: go1.21.12
Git commit: cc13f95
Built: Tue Jul 23 19:57:14 2024
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.7.19
GitCommit: 2bf793ef6dc9a18e00cb12efb64355c2c9d5eb41
runc:
Version: 1.7.19
GitCommit: v1.1.13-0-g58aa920
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Docker info
Client:
Version: 27.1.1
Context: desktop-linux
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.16.1-desktop.1
Path: /Users/apstndb/.docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.29.1-desktop.1
Path: /Users/apstndb/.docker/cli-plugins/docker-compose
debug: Get a shell into any image or container (Docker Inc.)
Version: 0.0.34
Path: /Users/apstndb/.docker/cli-plugins/docker-debug
desktop: Docker Desktop commands (Alpha) (Docker Inc.)
Version: v0.0.14
Path: /Users/apstndb/.docker/cli-plugins/docker-desktop
dev: Docker Dev Environments (Docker Inc.)
Version: v0.1.2
Path: /Users/apstndb/.docker/cli-plugins/docker-dev
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.25
Path: /Users/apstndb/.docker/cli-plugins/docker-extension
feedback: Provide feedback, right in your terminal! (Docker Inc.)
Version: v1.0.5
Path: /Users/apstndb/.docker/cli-plugins/docker-feedback
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v1.3.0
Path: /Users/apstndb/.docker/cli-plugins/docker-init
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: /Users/apstndb/.docker/cli-plugins/docker-sbom
scout: Docker Scout (Docker Inc.)
Version: v1.11.0
Path: /Users/apstndb/.docker/cli-plugins/docker-scout
Server:
Containers: 3
Running: 3
Paused: 0
Stopped: 0
Images: 17
Server Version: 27.1.1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 2bf793ef6dc9a18e00cb12efb64355c2c9d5eb41
runc version: v1.1.13-0-g58aa920
init version: de40ad0
Security Options:
seccomp
Profile: unconfined
cgroupns
Kernel Version: 6.10.0-linuxkit
Operating System: Docker Desktop
OSType: linux
Architecture: aarch64
CPUs: 8
Total Memory: 7.655GiB
Name: docker-desktop
ID: 55defb00-489f-4e5d-8f0c-4ade953f95db
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Labels:
com.docker.desktop.address=unix:///Users/apstndb/Library/Containers/com.docker.docker/Data/docker-cli.sock
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
127.0.0.0/8
Live Restore Enabled: false
What happened?
Background
I want to use testcontainers outside of go test, in order to launch CLI with Cloud Spanner Emulator container.
https://github.com/apstndb/spanner-mycli?tab=readme-ov-file#embedded-cloud-spanner-emulator
I have noticed -v flag is handled by testcontainers to control detail logs. (
Lines 13 to 18 in ac572ca
| // Logger is the default log instance | |
| var Logger Logging = log.New(os.Stderr, "", log.LstdFlags) | |
| func init() { | |
| for _, arg := range os.Args { | |
| if strings.EqualFold(arg, "-test.v=true") || strings.EqualFold(arg, "-v") { |
That is unexpected behaviour for me so I try to suppress their logs, but I have noticed it is not easy.
Part of these logs are able to be suppressed by WithLogger() as like:
// need to implement no op logger because there are no exported implementation.
type noopLogger struct{}
func (n noopLogger) Printf(format string, v ...interface{}) {
// NOOP
}
...
testcontainers.WithLogger(&noopLogger{})
But some logs are still emitted.(attached as "Relevant log output")
I have finally needed to override testcontainers.Logger global variable as like:
testcontainers.Logger = &noopLogger{}
I think it is not intuitive behavior, and there should be an easier way to fix this.
Relevant log output
2024/11/05 19:08:24 github.com/testcontainers/testcontainers-go - Connected to docker:
Server Version: 27.1.1
API Version: 1.46
Operating System: Docker Desktop
Total Memory: 7839 MB
Labels:
com.docker.desktop.address=unix:///Users/apstndb/Library/Containers/com.docker.docker/Data/docker-cli.sock
Testcontainers for Go Version: v0.34.0
Resolved Docker Host: unix:///var/run/docker.sock
Resolved Docker Socket Path: /var/run/docker.sock
Test SessionID: cbde03b675d4e638d0c164e7724ae475f973cf2f2c6762b4b284b553d05e3612
Test ProcessID: 95b332b0-992e-45b5-b494-fea5cc02cc6a
Additional information
No response