From 34164de7a1fd404eff23f2c509922271696f8d7e Mon Sep 17 00:00:00 2001 From: Trong Huu Nguyen Date: Fri, 20 Mar 2026 14:06:11 +0100 Subject: [PATCH] fix(metric): suppress internal opentelemetry logging unless trace verbosity This avoids cluttering the CLI output with logs such as these: ``` 2026/03/20 13:22:25 failed to upload metrics: Post "https://collector-internet.nav.cloud.nais.io/v1/metrics": context canceled ``` --- internal/application/application.go | 2 +- internal/metric/otel.go | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/internal/application/application.go b/internal/application/application.go index c135c6fb..d88fa021 100644 --- a/internal/application/application.go +++ b/internal/application/application.go @@ -103,7 +103,7 @@ func Run(ctx context.Context, w io.Writer) error { autoComplete := slices.Contains(os.Args[1:], "__complete") if !autoComplete { - flushMetrics := metric.Initialize() + flushMetrics := metric.Initialize(f.IsTrace()) defer func() { if err := recover(); err != nil { handlePanic(err) diff --git a/internal/metric/otel.go b/internal/metric/otel.go index a761c5be..d9e925f9 100644 --- a/internal/metric/otel.go +++ b/internal/metric/otel.go @@ -6,6 +6,7 @@ import ( "os" "time" + "github.com/go-logr/logr" "github.com/nais/cli/internal/version" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp" @@ -22,7 +23,7 @@ const ( var initialized = false -func Initialize() func(verbose bool) { +func Initialize(verbose bool) func(verbose bool) { if os.Getenv("DO_NOT_TRACK") == "1" || initialized { return func(verbose bool) { if verbose { @@ -36,6 +37,11 @@ func Initialize() func(verbose bool) { provider := newMeterProvider() otel.SetMeterProvider(provider) + if !verbose { + // Suppress internal OpenTelemetry logs to avoid cluttering the CLI output. + otel.SetLogger(logr.Discard()) + } + return func(trace bool) { if trace { fmt.Println("Shutdown: uploading metrics...")