Skip to content

Commit d690613

Browse files
committed
Actually init logging using Zap
Controllers typically use Zap these days. The only potential issue is that the flags are not compatible. This is somehow mitigated by supporting -v explicitly.
1 parent 7639e6f commit d690613

File tree

3 files changed

+32
-7
lines changed

3 files changed

+32
-7
lines changed

Diff for: go.mod

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ require (
1717
github.com/prometheus/common v0.62.0
1818
github.com/stretchr/testify v1.10.0
1919
go.uber.org/multierr v1.11.0
20+
go.uber.org/zap v1.27.0
2021
google.golang.org/grpc v1.70.0
2122
google.golang.org/protobuf v1.36.4
2223
k8s.io/api v0.32.1
@@ -29,6 +30,7 @@ require (
2930
k8s.io/utils v0.0.0-20241210054802-24370beab758
3031
sigs.k8s.io/controller-runtime v0.20.1
3132
sigs.k8s.io/structured-merge-diff/v4 v4.5.0
33+
sigs.k8s.io/yaml v1.4.0
3234
)
3335

3436
require (
@@ -61,6 +63,7 @@ require (
6163
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
6264
github.com/go-logr/logr v1.4.2 // indirect
6365
github.com/go-logr/stdr v1.2.2 // indirect
66+
github.com/go-logr/zapr v1.3.0 // indirect
6467
github.com/go-openapi/jsonpointer v0.21.0 // indirect
6568
github.com/go-openapi/jsonreference v0.20.2 // indirect
6669
github.com/go-openapi/swag v0.23.0 // indirect
@@ -104,7 +107,6 @@ require (
104107
github.com/spf13/cobra v1.8.1 // indirect
105108
github.com/spf13/pflag v1.0.5 // indirect
106109
github.com/stoewer/go-strcase v1.3.0 // indirect
107-
github.com/stretchr/objx v0.5.2 // indirect
108110
github.com/x448/float16 v0.8.4 // indirect
109111
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
110112
go.opentelemetry.io/otel v1.32.0 // indirect
@@ -114,7 +116,6 @@ require (
114116
go.opentelemetry.io/otel/sdk v1.32.0 // indirect
115117
go.opentelemetry.io/otel/trace v1.32.0 // indirect
116118
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
117-
go.uber.org/zap v1.27.0 // indirect
118119
golang.org/x/crypto v0.31.0 // indirect
119120
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
120121
golang.org/x/mod v0.22.0 // indirect
@@ -140,5 +141,4 @@ require (
140141
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.0 // indirect
141142
sigs.k8s.io/controller-tools v0.14.0 // indirect
142143
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
143-
sigs.k8s.io/yaml v1.4.0 // indirect
144144
)

Diff for: go.sum

-2
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,6 @@ github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8w
215215
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
216216
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
217217
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
218-
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
219-
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
220218
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
221219
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
222220
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=

Diff for: pkg/ext-proc/main.go

+29-2
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,24 @@ import (
99
"strconv"
1010

1111
"github.com/prometheus/client_golang/prometheus/promhttp"
12+
uberzap "go.uber.org/zap"
13+
"go.uber.org/zap/zapcore"
1214
"google.golang.org/grpc"
1315
healthPb "google.golang.org/grpc/health/grpc_health_v1"
1416
"inference.networking.x-k8s.io/gateway-api-inference-extension/api/v1alpha1"
1517
"inference.networking.x-k8s.io/gateway-api-inference-extension/pkg/ext-proc/backend"
1618
"inference.networking.x-k8s.io/gateway-api-inference-extension/pkg/ext-proc/backend/vllm"
1719
"inference.networking.x-k8s.io/gateway-api-inference-extension/pkg/ext-proc/metrics"
1820
runserver "inference.networking.x-k8s.io/gateway-api-inference-extension/pkg/ext-proc/server"
21+
"inference.networking.x-k8s.io/gateway-api-inference-extension/pkg/ext-proc/util/logging"
1922
"k8s.io/apimachinery/pkg/runtime"
2023
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2124
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
2225
"k8s.io/client-go/rest"
2326
"k8s.io/component-base/metrics/legacyregistry"
2427
klog "k8s.io/klog/v2"
2528
ctrl "sigs.k8s.io/controller-runtime"
29+
"sigs.k8s.io/controller-runtime/pkg/log/zap"
2630
"sigs.k8s.io/controller-runtime/pkg/metrics/filters"
2731
)
2832

@@ -69,6 +73,7 @@ var (
6973
"refreshMetricsInterval",
7074
runserver.DefaultRefreshMetricsInterval,
7175
"interval to refresh metrics")
76+
logVerbosity = flag.Int("v", logging.DEFAULT, "number for the log level verbosity")
7277

7378
scheme = runtime.NewScheme()
7479
)
@@ -79,10 +84,13 @@ func init() {
7984
}
8085

8186
func main() {
82-
klog.InitFlags(nil)
87+
opts := zap.Options{
88+
Development: true,
89+
}
90+
opts.BindFlags(flag.CommandLine)
8391
flag.Parse()
92+
initLogging(&opts)
8493

85-
ctrl.SetLogger(klog.TODO())
8694
cfg, err := ctrl.GetConfig()
8795
if err != nil {
8896
klog.Fatalf("Failed to get rest config: %v", err)
@@ -147,6 +155,25 @@ func main() {
147155
klog.Info("All components shutdown")
148156
}
149157

158+
func initLogging(opts *zap.Options) {
159+
// Unless -zap-log-level is explicitly set, use -v
160+
useV := true
161+
flag.Visit(func(f *flag.Flag) {
162+
if f.Name == "zap-log-level" {
163+
useV = false
164+
}
165+
})
166+
if useV {
167+
// See https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/log/zap#Options.Level
168+
lvl := -1 * (*logVerbosity)
169+
opts.Level = uberzap.NewAtomicLevelAt(zapcore.Level(int8(lvl)))
170+
}
171+
172+
logger := zap.New(zap.UseFlagOptions(opts))
173+
ctrl.SetLogger(logger)
174+
klog.SetLogger(logger)
175+
}
176+
150177
// startHealthServer starts the gRPC health probe server in a goroutine.
151178
func startHealthServer(ds *backend.K8sDatastore, port int) *grpc.Server {
152179
svr := grpc.NewServer()

0 commit comments

Comments
 (0)