From 45e59d012825971008b10dd3492744f516e434f5 Mon Sep 17 00:00:00 2001 From: Murphy Chen Date: Mon, 22 Sep 2025 14:37:16 +0800 Subject: [PATCH 1/3] rebase main --- cmd/bbr/health.go | 2 +- cmd/bbr/main.go | 26 +++------------- cmd/epp/runner/health.go | 2 +- .../body-based-routing/templates/bbr.yaml | 4 +-- .../templates/epp-deployment.yaml | 2 ++ .../telemetry}/logging/logger.go | 30 ++++++++++++++++++ pkg/bbr/handlers/request.go | 2 +- pkg/bbr/handlers/request_test.go | 2 +- pkg/bbr/handlers/server.go | 2 +- pkg/bbr/handlers/server_test.go | 2 +- pkg/epp/backend/metrics/fake.go | 2 +- pkg/epp/backend/metrics/logger.go | 2 +- pkg/epp/backend/metrics/metrics_test.go | 2 +- pkg/epp/backend/metrics/pod_metrics.go | 2 +- pkg/epp/config/loader/configloader_test.go | 2 +- .../inferenceobjective_reconciler.go | 2 +- .../controller/inferencepool_reconciler.go | 2 +- pkg/epp/controller/pod_reconciler.go | 2 +- pkg/epp/datalayer/collector.go | 4 +-- pkg/epp/datalayer/metrics/logger.go | 2 +- pkg/epp/datastore/datastore.go | 2 +- .../controller/internal/processor.go | 2 +- pkg/epp/flowcontrol/registry/managedqueue.go | 2 +- pkg/epp/flowcontrol/registry/registry.go | 2 +- pkg/epp/flowcontrol/registry/shard.go | 2 +- pkg/epp/handlers/response.go | 2 +- pkg/epp/handlers/response_test.go | 2 +- pkg/epp/handlers/server.go | 2 +- pkg/epp/metrics/metrics.go | 2 +- pkg/epp/metrics/metrics_test.go | 2 +- pkg/epp/plugins/plugin_state.go | 2 +- pkg/epp/plugins/plugin_state_test.go | 2 +- pkg/epp/requestcontrol/director.go | 2 +- pkg/epp/requestcontrol/director_test.go | 2 +- .../saturationdetector/saturationdetector.go | 2 +- .../framework/plugins/multi/prefix/indexer.go | 2 +- .../framework/plugins/multi/prefix/plugin.go | 2 +- .../plugins/picker/max_score_picker.go | 2 +- .../framework/plugins/picker/random_picker.go | 2 +- .../plugins/picker/weighted_random_picker.go | 2 +- .../scheduling/framework/scheduler_profile.go | 2 +- pkg/epp/scheduling/scheduler.go | 2 +- pkg/epp/server/runserver_test.go | 2 +- pkg/epp/util/env/env_test.go | 2 +- pkg/epp/util/logging/fatal.go | 31 ------------------- pkg/epp/util/logging/logging_const.go | 24 -------------- test/integration/bbr/hermetic_test.go | 2 +- test/integration/epp/hermetic_test.go | 2 +- test/integration/util.go | 2 +- 49 files changed, 82 insertions(+), 123 deletions(-) rename {pkg/epp/util => internal/telemetry}/logging/logger.go (63%) delete mode 100644 pkg/epp/util/logging/fatal.go delete mode 100644 pkg/epp/util/logging/logging_const.go diff --git a/cmd/bbr/health.go b/cmd/bbr/health.go index e1020b3ba..94f281ed1 100644 --- a/cmd/bbr/health.go +++ b/cmd/bbr/health.go @@ -25,7 +25,7 @@ import ( healthPb "google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/status" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" ) type healthServer struct { diff --git a/cmd/bbr/main.go b/cmd/bbr/main.go index d79d7c69b..5d10da785 100644 --- a/cmd/bbr/main.go +++ b/cmd/bbr/main.go @@ -22,8 +22,6 @@ import ( "os" "github.com/go-logr/logr" - uberzap "go.uber.org/zap" - "go.uber.org/zap/zapcore" "google.golang.org/grpc" healthPb "google.golang.org/grpc/health/grpc_health_v1" ctrl "sigs.k8s.io/controller-runtime" @@ -33,9 +31,9 @@ import ( metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" "sigs.k8s.io/gateway-api-inference-extension/internal/runnable" + "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/bbr/metrics" runserver "sigs.k8s.io/gateway-api-inference-extension/pkg/bbr/server" - "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) var ( @@ -51,7 +49,7 @@ var ( "metrics-port", 9090, "The metrics port") streaming = flag.Bool( "streaming", false, "Enables streaming support for Envoy full-duplex streaming mode") - logVerbosity = flag.Int("v", logging.DEFAULT, "number for the log level verbosity") + logVerbosity = flag.String("log-level", logging.DefaultLogLevel, "log level verbosity, support: debug, info, warn, error, dpanic, panic, fatal") setupLog = ctrl.Log.WithName("setup") ) @@ -66,7 +64,8 @@ func run() error { opts := zap.Options{Development: true} opts.BindFlags(flag.CommandLine) flag.Parse() - initLogging(&opts) + // --- set up logger + ctrl.SetLogger(logging.InitLogging(*logVerbosity, true)) // Print all flag values flags := make(map[string]any) @@ -138,20 +137,3 @@ func registerHealthServer(mgr manager.Manager, logger logr.Logger, port int) err } return nil } - -func initLogging(opts *zap.Options) { - useV := true - flag.Visit(func(f *flag.Flag) { - if f.Name == "zap-log-level" { - useV = false - } - }) - if useV { - // See https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/log/zap#Options.Level - lvl := -1 * (*logVerbosity) - opts.Level = uberzap.NewAtomicLevelAt(zapcore.Level(int8(lvl))) - } - - logger := zap.New(zap.UseFlagOptions(opts), zap.RawZapOpts(uberzap.AddCaller())) - ctrl.SetLogger(logger) -} diff --git a/cmd/epp/runner/health.go b/cmd/epp/runner/health.go index 1edbcff8e..ea28575e4 100644 --- a/cmd/epp/runner/health.go +++ b/cmd/epp/runner/health.go @@ -27,8 +27,8 @@ import ( healthPb "google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/status" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) type healthServer struct { diff --git a/config/charts/body-based-routing/templates/bbr.yaml b/config/charts/body-based-routing/templates/bbr.yaml index 0efa254f9..cf4f3d8fa 100644 --- a/config/charts/body-based-routing/templates/bbr.yaml +++ b/config/charts/body-based-routing/templates/bbr.yaml @@ -19,8 +19,8 @@ spec: imagePullPolicy: {{ .Values.bbr.image.pullPolicy | default "Always" }} args: - "--streaming" - - "--v" - - "3" + - "--log-level" + - "error" ports: - containerPort: {{ .Values.bbr.port }} # health check diff --git a/config/charts/inferencepool/templates/epp-deployment.yaml b/config/charts/inferencepool/templates/epp-deployment.yaml index d37ba3e94..28b6266ca 100644 --- a/config/charts/inferencepool/templates/epp-deployment.yaml +++ b/config/charts/inferencepool/templates/epp-deployment.yaml @@ -43,6 +43,8 @@ spec: {{- end }} - --zap-encoder - "json" + - "--log-level" + - "error" - --config-file - "/config/{{ .Values.inferenceExtension.pluginsConfigFile }}" {{- if eq (.Values.inferencePool.modelServerType | default "vllm") "triton-tensorrt-llm" }} diff --git a/pkg/epp/util/logging/logger.go b/internal/telemetry/logging/logger.go similarity index 63% rename from pkg/epp/util/logging/logger.go rename to internal/telemetry/logging/logger.go index 5e6ed88da..2909c04bf 100644 --- a/pkg/epp/util/logging/logger.go +++ b/internal/telemetry/logging/logger.go @@ -18,13 +18,24 @@ package logging import ( "context" + "os" "github.com/go-logr/logr" uberzap "go.uber.org/zap" + "go.uber.org/zap/zapcore" "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/log/zap" ) +const ( + DEFAULT = 2 + VERBOSE = 3 + DEBUG = 4 + TRACE = 5 + + DefaultLogLevel = "error" +) + // NewTestLogger creates a new Zap logger using the dev mode. func NewTestLogger() logr.Logger { return zap.New(zap.UseDevMode(true), zap.RawZapOpts(uberzap.AddCaller())) @@ -34,3 +45,22 @@ func NewTestLogger() logr.Logger { func NewTestLoggerIntoContext(ctx context.Context) context.Context { return log.IntoContext(ctx, zap.New(zap.UseDevMode(true), zap.RawZapOpts(uberzap.AddCaller()))) } + +// Fatal calls logger.Error followed by os.Exit(1). +// +// This is a utility function and should not be used in production code! +func Fatal(logger logr.Logger, err error, msg string, keysAndValues ...any) { + logger.Error(err, msg, keysAndValues...) + os.Exit(1) +} + +func InitLogging(text string, development bool) logr.Logger { + level, _ := zapcore.ParseLevel(text) + opts := &zap.Options{ + Development: development, + Level: uberzap.NewAtomicLevelAt(level), + } + logger := zap.New(zap.UseFlagOptions(opts), zap.RawZapOpts(uberzap.AddCaller())) + + return logger +} diff --git a/pkg/bbr/handlers/request.go b/pkg/bbr/handlers/request.go index e7baec6ef..e75b53511 100644 --- a/pkg/bbr/handlers/request.go +++ b/pkg/bbr/handlers/request.go @@ -24,8 +24,8 @@ import ( eppb "github.com/envoyproxy/go-control-plane/envoy/service/ext_proc/v3" "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/bbr/metrics" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const modelHeader = "X-Gateway-Model-Name" diff --git a/pkg/bbr/handlers/request_test.go b/pkg/bbr/handlers/request_test.go index 9e408fdef..5356e0688 100644 --- a/pkg/bbr/handlers/request_test.go +++ b/pkg/bbr/handlers/request_test.go @@ -29,8 +29,8 @@ import ( metricsutils "k8s.io/component-base/metrics/testutil" crmetrics "sigs.k8s.io/controller-runtime/pkg/metrics" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/bbr/metrics" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) func TestHandleRequestBody(t *testing.T) { diff --git a/pkg/bbr/handlers/server.go b/pkg/bbr/handlers/server.go index 6488453be..0da679712 100644 --- a/pkg/bbr/handlers/server.go +++ b/pkg/bbr/handlers/server.go @@ -27,7 +27,7 @@ import ( "google.golang.org/grpc/status" "sigs.k8s.io/controller-runtime/pkg/log" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" requtil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/request" ) diff --git a/pkg/bbr/handlers/server_test.go b/pkg/bbr/handlers/server_test.go index 7bc50a697..dee44b6b4 100644 --- a/pkg/bbr/handlers/server_test.go +++ b/pkg/bbr/handlers/server_test.go @@ -26,7 +26,7 @@ import ( "google.golang.org/protobuf/testing/protocmp" "sigs.k8s.io/controller-runtime/pkg/log" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" ) func TestProcessRequestBody(t *testing.T) { diff --git a/pkg/epp/backend/metrics/fake.go b/pkg/epp/backend/metrics/fake.go index 4e0687ff0..fe7106210 100644 --- a/pkg/epp/backend/metrics/fake.go +++ b/pkg/epp/backend/metrics/fake.go @@ -26,9 +26,9 @@ import ( "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datalayer" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) // FakePodMetrics is an implementation of PodMetrics that doesn't run the async refresh loop. diff --git a/pkg/epp/backend/metrics/logger.go b/pkg/epp/backend/metrics/logger.go index 69fc404e7..522b97f72 100644 --- a/pkg/epp/backend/metrics/logger.go +++ b/pkg/epp/backend/metrics/logger.go @@ -24,9 +24,9 @@ import ( "github.com/go-logr/logr" "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datalayer" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const ( diff --git a/pkg/epp/backend/metrics/metrics_test.go b/pkg/epp/backend/metrics/metrics_test.go index 2dd8ca5dd..b08aa53dc 100644 --- a/pkg/epp/backend/metrics/metrics_test.go +++ b/pkg/epp/backend/metrics/metrics_test.go @@ -31,8 +31,8 @@ import ( "google.golang.org/protobuf/proto" "k8s.io/apimachinery/pkg/types" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) // --- Test Helpers --- diff --git a/pkg/epp/backend/metrics/pod_metrics.go b/pkg/epp/backend/metrics/pod_metrics.go index da66a97ed..c2916e458 100644 --- a/pkg/epp/backend/metrics/pod_metrics.go +++ b/pkg/epp/backend/metrics/pod_metrics.go @@ -27,9 +27,9 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datalayer" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const ( diff --git a/pkg/epp/config/loader/configloader_test.go b/pkg/epp/config/loader/configloader_test.go index b0b0741c1..46f6ddfd6 100644 --- a/pkg/epp/config/loader/configloader_test.go +++ b/pkg/epp/config/loader/configloader_test.go @@ -27,6 +27,7 @@ import ( "k8s.io/utils/ptr" configapi "sigs.k8s.io/gateway-api-inference-extension/apix/config/v1alpha1" + "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/config" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/plugins" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework" @@ -34,7 +35,6 @@ import ( "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/picker" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/profile" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/types" - "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" "sigs.k8s.io/gateway-api-inference-extension/test/utils" ) diff --git a/pkg/epp/controller/inferenceobjective_reconciler.go b/pkg/epp/controller/inferenceobjective_reconciler.go index c8ac5a6c3..155c7a97c 100644 --- a/pkg/epp/controller/inferenceobjective_reconciler.go +++ b/pkg/epp/controller/inferenceobjective_reconciler.go @@ -28,9 +28,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/predicate" "sigs.k8s.io/gateway-api-inference-extension/apix/v1alpha2" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/common" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) type InferenceObjectiveReconciler struct { diff --git a/pkg/epp/controller/inferencepool_reconciler.go b/pkg/epp/controller/inferencepool_reconciler.go index 3b52de0ae..77df6a9b2 100644 --- a/pkg/epp/controller/inferencepool_reconciler.go +++ b/pkg/epp/controller/inferencepool_reconciler.go @@ -27,9 +27,9 @@ import ( v1 "sigs.k8s.io/gateway-api-inference-extension/api/v1" "sigs.k8s.io/gateway-api-inference-extension/apix/v1alpha2" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/common" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) // InferencePoolReconciler utilizes the controller runtime to reconcile Instance Gateway resources diff --git a/pkg/epp/controller/pod_reconciler.go b/pkg/epp/controller/pod_reconciler.go index ce77b2cfd..64915f970 100644 --- a/pkg/epp/controller/pod_reconciler.go +++ b/pkg/epp/controller/pod_reconciler.go @@ -30,8 +30,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/predicate" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" podutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/pod" ) diff --git a/pkg/epp/datalayer/collector.go b/pkg/epp/datalayer/collector.go index 86a8f7b4e..72bdefc82 100644 --- a/pkg/epp/datalayer/collector.go +++ b/pkg/epp/datalayer/collector.go @@ -19,12 +19,12 @@ package datalayer import ( "context" "errors" + "sync" "time" "sigs.k8s.io/controller-runtime/pkg/log" - - "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" + "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" ) // TODO: diff --git a/pkg/epp/datalayer/metrics/logger.go b/pkg/epp/datalayer/metrics/logger.go index fac757dbe..7c150eb57 100644 --- a/pkg/epp/datalayer/metrics/logger.go +++ b/pkg/epp/datalayer/metrics/logger.go @@ -23,9 +23,9 @@ import ( "github.com/go-logr/logr" "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datalayer" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const debugPrintInterval = 5 * time.Second diff --git a/pkg/epp/datastore/datastore.go b/pkg/epp/datastore/datastore.go index 86204be26..4e8c3b9bc 100644 --- a/pkg/epp/datastore/datastore.go +++ b/pkg/epp/datastore/datastore.go @@ -31,10 +31,10 @@ import ( v1 "sigs.k8s.io/gateway-api-inference-extension/api/v1" "sigs.k8s.io/gateway-api-inference-extension/apix/v1alpha2" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" backendmetrics "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend/metrics" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datalayer" dlmetrics "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datalayer/metrics" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" podutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/pod" ) diff --git a/pkg/epp/flowcontrol/controller/internal/processor.go b/pkg/epp/flowcontrol/controller/internal/processor.go index 9b6bb705f..762ebd979 100644 --- a/pkg/epp/flowcontrol/controller/internal/processor.go +++ b/pkg/epp/flowcontrol/controller/internal/processor.go @@ -29,10 +29,10 @@ import ( "k8s.io/utils/clock" "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/contracts" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/framework" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/types" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) // maxCleanupWorkers caps the number of concurrent workers for background cleanup tasks. This prevents a single shard diff --git a/pkg/epp/flowcontrol/registry/managedqueue.go b/pkg/epp/flowcontrol/registry/managedqueue.go index e56cdd821..1d3f2f635 100644 --- a/pkg/epp/flowcontrol/registry/managedqueue.go +++ b/pkg/epp/flowcontrol/registry/managedqueue.go @@ -23,10 +23,10 @@ import ( "github.com/go-logr/logr" + "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/contracts" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/framework" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/types" - "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) // managedQueue implements `contracts.ManagedQueue`. It acts as a stateful decorator around a `framework.SafeQueue`. diff --git a/pkg/epp/flowcontrol/registry/registry.go b/pkg/epp/flowcontrol/registry/registry.go index 3a73ef706..4f394b5f6 100644 --- a/pkg/epp/flowcontrol/registry/registry.go +++ b/pkg/epp/flowcontrol/registry/registry.go @@ -28,10 +28,10 @@ import ( "github.com/go-logr/logr" "k8s.io/utils/clock" + "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/contracts" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/framework" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/types" - "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) // propagateStatsDeltaFunc defines the callback function used to propagate statistics changes (deltas) up the hierarchy diff --git a/pkg/epp/flowcontrol/registry/shard.go b/pkg/epp/flowcontrol/registry/shard.go index 4a7918e79..f51933f59 100644 --- a/pkg/epp/flowcontrol/registry/shard.go +++ b/pkg/epp/flowcontrol/registry/shard.go @@ -24,10 +24,10 @@ import ( "github.com/go-logr/logr" + "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/contracts" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/framework" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/flowcontrol/types" - "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) // priorityBand holds all `managedQueues` and configuration for a single priority level within a shard. diff --git a/pkg/epp/handlers/response.go b/pkg/epp/handlers/response.go index 7dfaf3b2e..7cc8e605b 100644 --- a/pkg/epp/handlers/response.go +++ b/pkg/epp/handlers/response.go @@ -26,8 +26,8 @@ import ( extProcPb "github.com/envoyproxy/go-control-plane/envoy/service/ext_proc/v3" "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const ( diff --git a/pkg/epp/handlers/response_test.go b/pkg/epp/handlers/response_test.go index 6eb7734e4..cfedaa467 100644 --- a/pkg/epp/handlers/response_test.go +++ b/pkg/epp/handlers/response_test.go @@ -23,7 +23,7 @@ import ( "github.com/google/go-cmp/cmp" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" ) const ( diff --git a/pkg/epp/handlers/server.go b/pkg/epp/handlers/server.go index ddfb3316c..4ca3f0ab9 100644 --- a/pkg/epp/handlers/server.go +++ b/pkg/epp/handlers/server.go @@ -32,11 +32,11 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" v1 "sigs.k8s.io/gateway-api-inference-extension/api/v1" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics" schedulingtypes "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/types" errutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/error" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" requtil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/request" ) diff --git a/pkg/epp/metrics/metrics.go b/pkg/epp/metrics/metrics.go index cefc4d43a..a43905834 100644 --- a/pkg/epp/metrics/metrics.go +++ b/pkg/epp/metrics/metrics.go @@ -26,7 +26,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/metrics" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" metricsutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/metrics" ) diff --git a/pkg/epp/metrics/metrics_test.go b/pkg/epp/metrics/metrics_test.go index 837fb8b22..85e823fce 100644 --- a/pkg/epp/metrics/metrics_test.go +++ b/pkg/epp/metrics/metrics_test.go @@ -25,8 +25,8 @@ import ( "k8s.io/component-base/metrics/testutil" "sigs.k8s.io/controller-runtime/pkg/metrics" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" errutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/error" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const ( diff --git a/pkg/epp/plugins/plugin_state.go b/pkg/epp/plugins/plugin_state.go index 0281900d8..e06f672d8 100644 --- a/pkg/epp/plugins/plugin_state.go +++ b/pkg/epp/plugins/plugin_state.go @@ -24,7 +24,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" ) const ( diff --git a/pkg/epp/plugins/plugin_state_test.go b/pkg/epp/plugins/plugin_state_test.go index 0de65c23a..346378d64 100644 --- a/pkg/epp/plugins/plugin_state_test.go +++ b/pkg/epp/plugins/plugin_state_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/assert" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" ) // pluginTestData implements the StateData interface for testing purposes. diff --git a/pkg/epp/requestcontrol/director.go b/pkg/epp/requestcontrol/director.go index a3e2d6d13..c1e7ef95f 100644 --- a/pkg/epp/requestcontrol/director.go +++ b/pkg/epp/requestcontrol/director.go @@ -31,6 +31,7 @@ import ( v1 "sigs.k8s.io/gateway-api-inference-extension/api/v1" "sigs.k8s.io/gateway-api-inference-extension/apix/v1alpha2" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend" backendmetrics "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend/metrics" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/handlers" @@ -38,7 +39,6 @@ import ( "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics" schedulingtypes "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/types" errutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/error" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" requtil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/request" ) diff --git a/pkg/epp/requestcontrol/director_test.go b/pkg/epp/requestcontrol/director_test.go index a0cb7c325..3e7d3af8e 100644 --- a/pkg/epp/requestcontrol/director_test.go +++ b/pkg/epp/requestcontrol/director_test.go @@ -35,6 +35,7 @@ import ( v1 "sigs.k8s.io/gateway-api-inference-extension/api/v1" "sigs.k8s.io/gateway-api-inference-extension/apix/v1alpha2" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend" backendmetrics "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend/metrics" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore" @@ -43,7 +44,6 @@ import ( "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/plugins" schedulingtypes "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/types" errutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/error" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" requtil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/request" testutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/testing" ) diff --git a/pkg/epp/saturationdetector/saturationdetector.go b/pkg/epp/saturationdetector/saturationdetector.go index 46b94b22c..f87796a2a 100644 --- a/pkg/epp/saturationdetector/saturationdetector.go +++ b/pkg/epp/saturationdetector/saturationdetector.go @@ -36,8 +36,8 @@ import ( "github.com/go-logr/logr" "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" backendmetrics "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend/metrics" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const ( diff --git a/pkg/epp/scheduling/framework/plugins/multi/prefix/indexer.go b/pkg/epp/scheduling/framework/plugins/multi/prefix/indexer.go index bd9e2c96e..04c3d59c0 100644 --- a/pkg/epp/scheduling/framework/plugins/multi/prefix/indexer.go +++ b/pkg/epp/scheduling/framework/plugins/multi/prefix/indexer.go @@ -24,8 +24,8 @@ import ( lru "github.com/hashicorp/golang-lru/v2" "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) // An indexer maintains an LRU cache of prompt prefix hashes and the server(s) that might have that diff --git a/pkg/epp/scheduling/framework/plugins/multi/prefix/plugin.go b/pkg/epp/scheduling/framework/plugins/multi/prefix/plugin.go index 6bc81a44a..228cf910e 100644 --- a/pkg/epp/scheduling/framework/plugins/multi/prefix/plugin.go +++ b/pkg/epp/scheduling/framework/plugins/multi/prefix/plugin.go @@ -27,12 +27,12 @@ import ( k8stypes "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/plugins" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/requestcontrol" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/types" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const ( diff --git a/pkg/epp/scheduling/framework/plugins/picker/max_score_picker.go b/pkg/epp/scheduling/framework/plugins/picker/max_score_picker.go index 33e99bd06..76de3a945 100644 --- a/pkg/epp/scheduling/framework/plugins/picker/max_score_picker.go +++ b/pkg/epp/scheduling/framework/plugins/picker/max_score_picker.go @@ -24,10 +24,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/plugins" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/types" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const ( diff --git a/pkg/epp/scheduling/framework/plugins/picker/random_picker.go b/pkg/epp/scheduling/framework/plugins/picker/random_picker.go index 10ad68469..1d40c8405 100644 --- a/pkg/epp/scheduling/framework/plugins/picker/random_picker.go +++ b/pkg/epp/scheduling/framework/plugins/picker/random_picker.go @@ -23,10 +23,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/plugins" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/types" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const ( diff --git a/pkg/epp/scheduling/framework/plugins/picker/weighted_random_picker.go b/pkg/epp/scheduling/framework/plugins/picker/weighted_random_picker.go index 540ede43c..7d00fb6bd 100644 --- a/pkg/epp/scheduling/framework/plugins/picker/weighted_random_picker.go +++ b/pkg/epp/scheduling/framework/plugins/picker/weighted_random_picker.go @@ -28,10 +28,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/plugins" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/types" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) const ( diff --git a/pkg/epp/scheduling/framework/scheduler_profile.go b/pkg/epp/scheduling/framework/scheduler_profile.go index 9c0ae0abc..9b942156b 100644 --- a/pkg/epp/scheduling/framework/scheduler_profile.go +++ b/pkg/epp/scheduling/framework/scheduler_profile.go @@ -24,11 +24,11 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/plugins" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/types" errutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/error" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) // NewSchedulerProfile creates a new SchedulerProfile object and returns its pointer. diff --git a/pkg/epp/scheduling/scheduler.go b/pkg/epp/scheduling/scheduler.go index 12c18833a..bfad525c2 100644 --- a/pkg/epp/scheduling/scheduler.go +++ b/pkg/epp/scheduling/scheduler.go @@ -24,10 +24,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metrics" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/types" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) // NewSchedulerWithConfig returns a new scheduler with the given scheduler plugins configuration. diff --git a/pkg/epp/server/runserver_test.go b/pkg/epp/server/runserver_test.go index b02688c58..a75a583ff 100644 --- a/pkg/epp/server/runserver_test.go +++ b/pkg/epp/server/runserver_test.go @@ -21,8 +21,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/manager" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/server" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" ) func TestRunnable(t *testing.T) { diff --git a/pkg/epp/util/env/env_test.go b/pkg/epp/util/env/env_test.go index 10b0b553e..5463187fe 100644 --- a/pkg/epp/util/env/env_test.go +++ b/pkg/epp/util/env/env_test.go @@ -7,7 +7,7 @@ import ( "github.com/go-logr/logr/testr" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" ) func TestGetEnvFloat(t *testing.T) { diff --git a/pkg/epp/util/logging/fatal.go b/pkg/epp/util/logging/fatal.go deleted file mode 100644 index ddc15c400..000000000 --- a/pkg/epp/util/logging/fatal.go +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright 2025 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package logging - -import ( - "os" - - "github.com/go-logr/logr" -) - -// Fatal calls logger.Error followed by os.Exit(1). -// -// This is a utility function and should not be used in production code! -func Fatal(logger logr.Logger, err error, msg string, keysAndValues ...any) { - logger.Error(err, msg, keysAndValues...) - os.Exit(1) -} diff --git a/pkg/epp/util/logging/logging_const.go b/pkg/epp/util/logging/logging_const.go deleted file mode 100644 index 823ab28b1..000000000 --- a/pkg/epp/util/logging/logging_const.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright 2025 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package logging - -const ( - DEFAULT = 2 - VERBOSE = 3 - DEBUG = 4 - TRACE = 5 -) diff --git a/test/integration/bbr/hermetic_test.go b/test/integration/bbr/hermetic_test.go index e1c25a78f..b5f1e4b63 100644 --- a/test/integration/bbr/hermetic_test.go +++ b/test/integration/bbr/hermetic_test.go @@ -30,8 +30,8 @@ import ( "google.golang.org/grpc/credentials/insecure" "google.golang.org/protobuf/testing/protocmp" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" runserver "sigs.k8s.io/gateway-api-inference-extension/pkg/bbr/server" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" integrationutils "sigs.k8s.io/gateway-api-inference-extension/test/integration" ) diff --git a/test/integration/epp/hermetic_test.go b/test/integration/epp/hermetic_test.go index 3dc42f8ba..88c784093 100644 --- a/test/integration/epp/hermetic_test.go +++ b/test/integration/epp/hermetic_test.go @@ -60,6 +60,7 @@ import ( v1 "sigs.k8s.io/gateway-api-inference-extension/api/v1" "sigs.k8s.io/gateway-api-inference-extension/apix/v1alpha2" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/common" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend" backendmetrics "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend/metrics" @@ -75,7 +76,6 @@ import ( "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/profile" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/scorer" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/server" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" requtil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/request" epptestutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/testing" integrationutils "sigs.k8s.io/gateway-api-inference-extension/test/integration" diff --git a/test/integration/util.go b/test/integration/util.go index d78b76e28..dc1303cab 100644 --- a/test/integration/util.go +++ b/test/integration/util.go @@ -29,8 +29,8 @@ import ( "github.com/go-logr/logr" "google.golang.org/protobuf/types/known/structpb" + logutil "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/metadata" - logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" requtil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/request" ) From 7c6261787fe7166a58e805f25ab3b0acb19a93e1 Mon Sep 17 00:00:00 2001 From: Murphy Chen Date: Fri, 19 Sep 2025 10:48:32 +0800 Subject: [PATCH 2/3] revert to use number verbosity --- cmd/bbr/main.go | 2 +- cmd/epp/runner/runner.go | 4 ++-- internal/telemetry/logging/logger.go | 8 +++----- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/cmd/bbr/main.go b/cmd/bbr/main.go index 5d10da785..6bbeb0dd8 100644 --- a/cmd/bbr/main.go +++ b/cmd/bbr/main.go @@ -49,7 +49,7 @@ var ( "metrics-port", 9090, "The metrics port") streaming = flag.Bool( "streaming", false, "Enables streaming support for Envoy full-duplex streaming mode") - logVerbosity = flag.String("log-level", logging.DefaultLogLevel, "log level verbosity, support: debug, info, warn, error, dpanic, panic, fatal") + logVerbosity = flag.Int("log-verbosity", logging.DEFAULT, "number for the log level verbosity, higher verbosity means more (and less important) logs will be generated") setupLog = ctrl.Log.WithName("setup") ) diff --git a/cmd/epp/runner/runner.go b/cmd/epp/runner/runner.go index 2842704bb..a362cefb9 100644 --- a/cmd/epp/runner/runner.go +++ b/cmd/epp/runner/runner.go @@ -44,6 +44,7 @@ import ( metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" "sigs.k8s.io/gateway-api-inference-extension/internal/runnable" + "sigs.k8s.io/gateway-api-inference-extension/internal/telemetry/logging" "sigs.k8s.io/gateway-api-inference-extension/pkg/common" backendmetrics "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend/metrics" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/config/loader" @@ -63,7 +64,6 @@ import ( testfilter "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/scheduling/framework/plugins/test/filter" runserver "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/server" "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/env" - "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging" "sigs.k8s.io/gateway-api-inference-extension/version" ) @@ -81,7 +81,7 @@ var ( poolName = flag.String("pool-name", runserver.DefaultPoolName, "Name of the InferencePool this Endpoint Picker is associated with.") poolGroup = flag.String("pool-group", runserver.DefaultPoolGroup, "group of the InferencePool this Endpoint Picker is associated with.") poolNamespace = flag.String("pool-namespace", "", "Namespace of the InferencePool this Endpoint Picker is associated with.") - logVerbosity = flag.Int("v", logging.DEFAULT, "number for the log level verbosity") + logVerbosity = flag.Int("log-verbosity", logging.DEFAULT, "number for the log level verbosity, higher verbosity means more (and less important) logs will be generated") secureServing = flag.Bool("secure-serving", runserver.DefaultSecureServing, "Enables secure serving. Defaults to true.") healthChecking = flag.Bool("health-checking", runserver.DefaultHealthChecking, "Enables health checking") certPath = flag.String("cert-path", runserver.DefaultCertPath, "The path to the certificate for secure serving. The certificate and private key files "+ diff --git a/internal/telemetry/logging/logger.go b/internal/telemetry/logging/logger.go index 2909c04bf..0f5779fc3 100644 --- a/internal/telemetry/logging/logger.go +++ b/internal/telemetry/logging/logger.go @@ -32,8 +32,6 @@ const ( VERBOSE = 3 DEBUG = 4 TRACE = 5 - - DefaultLogLevel = "error" ) // NewTestLogger creates a new Zap logger using the dev mode. @@ -54,11 +52,11 @@ func Fatal(logger logr.Logger, err error, msg string, keysAndValues ...any) { os.Exit(1) } -func InitLogging(text string, development bool) logr.Logger { - level, _ := zapcore.ParseLevel(text) +func InitLogging(logVerbosity int, development bool) logr.Logger { + // See https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/log/zap#Options.Level opts := &zap.Options{ Development: development, - Level: uberzap.NewAtomicLevelAt(level), + Level: uberzap.NewAtomicLevelAt(zapcore.Level(int8(-1 * logVerbosity))), } logger := zap.New(zap.UseFlagOptions(opts), zap.RawZapOpts(uberzap.AddCaller())) From 9fb3a03f2da8de1eb3fc42fe658665c383145683 Mon Sep 17 00:00:00 2001 From: Murphy Chen Date: Mon, 22 Sep 2025 15:05:43 +0800 Subject: [PATCH 3/3] use original zap flag --- cmd/bbr/main.go | 3 ++- cmd/epp/runner/runner.go | 27 ++----------------- .../body-based-routing/templates/bbr.yaml | 4 +-- .../templates/epp-deployment.yaml | 4 +-- internal/telemetry/logging/logger.go | 12 ++------- 5 files changed, 10 insertions(+), 40 deletions(-) diff --git a/cmd/bbr/main.go b/cmd/bbr/main.go index 6bbeb0dd8..0e190ea39 100644 --- a/cmd/bbr/main.go +++ b/cmd/bbr/main.go @@ -64,8 +64,9 @@ func run() error { opts := zap.Options{Development: true} opts.BindFlags(flag.CommandLine) flag.Parse() + // --- set up logger - ctrl.SetLogger(logging.InitLogging(*logVerbosity, true)) + ctrl.SetLogger(logging.InitLogging(&opts)) // Print all flag values flags := make(map[string]any) diff --git a/cmd/epp/runner/runner.go b/cmd/epp/runner/runner.go index a362cefb9..605f4f57c 100644 --- a/cmd/epp/runner/runner.go +++ b/cmd/epp/runner/runner.go @@ -30,8 +30,6 @@ import ( "github.com/go-logr/logr" "github.com/prometheus/client_golang/prometheus" - uberzap "go.uber.org/zap" - "go.uber.org/zap/zapcore" "google.golang.org/grpc" healthPb "google.golang.org/grpc/health/grpc_health_v1" "k8s.io/apimachinery/pkg/runtime/schema" @@ -81,7 +79,6 @@ var ( poolName = flag.String("pool-name", runserver.DefaultPoolName, "Name of the InferencePool this Endpoint Picker is associated with.") poolGroup = flag.String("pool-group", runserver.DefaultPoolGroup, "group of the InferencePool this Endpoint Picker is associated with.") poolNamespace = flag.String("pool-namespace", "", "Namespace of the InferencePool this Endpoint Picker is associated with.") - logVerbosity = flag.Int("log-verbosity", logging.DEFAULT, "number for the log level verbosity, higher verbosity means more (and less important) logs will be generated") secureServing = flag.Bool("secure-serving", runserver.DefaultSecureServing, "Enables secure serving. Defaults to true.") healthChecking = flag.Bool("health-checking", runserver.DefaultHealthChecking, "Enables health checking") certPath = flag.String("cert-path", runserver.DefaultCertPath, "The path to the certificate for secure serving. The certificate and private key files "+ @@ -134,13 +131,11 @@ func (r *Runner) WithSchedulerConfig(schedulerConfig *scheduling.SchedulerConfig } func (r *Runner) Run(ctx context.Context) error { - opts := zap.Options{ - Development: true, - } + opts := zap.Options{Development: true} opts.BindFlags(flag.CommandLine) flag.Parse() - initLogging(&opts) + ctrl.SetLogger(logging.InitLogging(&opts)) setupLog.Info("GIE build", "commit-sha", version.CommitSHA, "build-ref", version.BuildRef) // Validate flags @@ -430,24 +425,6 @@ func setupDatalayer() (datalayer.EndpointFactory, error) { return factory, nil } -func initLogging(opts *zap.Options) { - // Unless -zap-log-level is explicitly set, use -v - useV := true - flag.Visit(func(f *flag.Flag) { - if f.Name == "zap-log-level" { - useV = false - } - }) - if useV { - // See https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/log/zap#Options.Level - lvl := -1 * (*logVerbosity) - opts.Level = uberzap.NewAtomicLevelAt(zapcore.Level(int8(lvl))) - } - - logger := zap.New(zap.UseFlagOptions(opts), zap.RawZapOpts(uberzap.AddCaller())) - ctrl.SetLogger(logger) -} - // registerExtProcServer adds the ExtProcServerRunner as a Runnable to the manager. func registerExtProcServer(mgr manager.Manager, runner *runserver.ExtProcServerRunner, logger logr.Logger) error { if err := mgr.Add(runner.AsRunnable(logger)); err != nil { diff --git a/config/charts/body-based-routing/templates/bbr.yaml b/config/charts/body-based-routing/templates/bbr.yaml index cf4f3d8fa..f63ae162a 100644 --- a/config/charts/body-based-routing/templates/bbr.yaml +++ b/config/charts/body-based-routing/templates/bbr.yaml @@ -19,8 +19,8 @@ spec: imagePullPolicy: {{ .Values.bbr.image.pullPolicy | default "Always" }} args: - "--streaming" - - "--log-level" - - "error" + - "--zap-log-level" + - "info" ports: - containerPort: {{ .Values.bbr.port }} # health check diff --git a/config/charts/inferencepool/templates/epp-deployment.yaml b/config/charts/inferencepool/templates/epp-deployment.yaml index 28b6266ca..abfd80c6b 100644 --- a/config/charts/inferencepool/templates/epp-deployment.yaml +++ b/config/charts/inferencepool/templates/epp-deployment.yaml @@ -43,8 +43,8 @@ spec: {{- end }} - --zap-encoder - "json" - - "--log-level" - - "error" + - --zap-log-level + - "info" - --config-file - "/config/{{ .Values.inferenceExtension.pluginsConfigFile }}" {{- if eq (.Values.inferencePool.modelServerType | default "vllm") "triton-tensorrt-llm" }} diff --git a/internal/telemetry/logging/logger.go b/internal/telemetry/logging/logger.go index 0f5779fc3..22dfee30e 100644 --- a/internal/telemetry/logging/logger.go +++ b/internal/telemetry/logging/logger.go @@ -22,7 +22,6 @@ import ( "github.com/go-logr/logr" uberzap "go.uber.org/zap" - "go.uber.org/zap/zapcore" "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/log/zap" ) @@ -52,13 +51,6 @@ func Fatal(logger logr.Logger, err error, msg string, keysAndValues ...any) { os.Exit(1) } -func InitLogging(logVerbosity int, development bool) logr.Logger { - // See https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/log/zap#Options.Level - opts := &zap.Options{ - Development: development, - Level: uberzap.NewAtomicLevelAt(zapcore.Level(int8(-1 * logVerbosity))), - } - logger := zap.New(zap.UseFlagOptions(opts), zap.RawZapOpts(uberzap.AddCaller())) - - return logger +func InitLogging(opts *zap.Options) logr.Logger { + return zap.New(zap.UseFlagOptions(opts), zap.RawZapOpts(uberzap.AddCaller())) }