Skip to content

Commit 32f53cd

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 4a8f04c commit 32f53cd

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

go.mod

+2-1
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.5
2223
k8s.io/api v0.32.1
@@ -62,6 +63,7 @@ require (
6263
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
6364
github.com/go-logr/logr v1.4.2 // indirect
6465
github.com/go-logr/stdr v1.2.2 // indirect
66+
github.com/go-logr/zapr v1.3.0 // indirect
6567
github.com/go-openapi/jsonpointer v0.21.0 // indirect
6668
github.com/go-openapi/jsonreference v0.20.2 // indirect
6769
github.com/go-openapi/swag v0.23.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.32.0 // indirect
119120
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
120121
golang.org/x/mod v0.22.0 // indirect

pkg/ext-proc/main.go

+29-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ 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
"k8s.io/apimachinery/pkg/runtime"
@@ -18,12 +20,14 @@ import (
1820
"k8s.io/component-base/metrics/legacyregistry"
1921
klog "k8s.io/klog/v2"
2022
ctrl "sigs.k8s.io/controller-runtime"
23+
"sigs.k8s.io/controller-runtime/pkg/log/zap"
2124
"sigs.k8s.io/controller-runtime/pkg/metrics/filters"
2225
"sigs.k8s.io/gateway-api-inference-extension/api/v1alpha1"
2326
"sigs.k8s.io/gateway-api-inference-extension/pkg/ext-proc/backend"
2427
"sigs.k8s.io/gateway-api-inference-extension/pkg/ext-proc/backend/vllm"
2528
"sigs.k8s.io/gateway-api-inference-extension/pkg/ext-proc/metrics"
2629
runserver "sigs.k8s.io/gateway-api-inference-extension/pkg/ext-proc/server"
30+
"sigs.k8s.io/gateway-api-inference-extension/pkg/ext-proc/util/logging"
2731
)
2832

2933
const (
@@ -73,6 +77,7 @@ var (
7377
"refreshPrometheusMetricsInterval",
7478
runserver.DefaultRefreshPrometheusMetricsInterval,
7579
"interval to flush prometheus metrics")
80+
logVerbosity = flag.Int("v", logging.DEFAULT, "number for the log level verbosity")
7681

7782
scheme = runtime.NewScheme()
7883
)
@@ -83,10 +88,13 @@ func init() {
8388
}
8489

8590
func main() {
86-
klog.InitFlags(nil)
91+
opts := zap.Options{
92+
Development: true,
93+
}
94+
opts.BindFlags(flag.CommandLine)
8795
flag.Parse()
96+
initLogging(&opts)
8897

89-
ctrl.SetLogger(klog.TODO())
9098
cfg, err := ctrl.GetConfig()
9199
if err != nil {
92100
klog.Fatalf("Failed to get rest config: %v", err)
@@ -152,6 +160,25 @@ func main() {
152160
klog.Info("All components shutdown")
153161
}
154162

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

0 commit comments

Comments
 (0)