Skip to content

Commit 36312ec

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 d5f5507 commit 36312ec

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.4
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,13 +9,16 @@ 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
"k8s.io/client-go/kubernetes"
@@ -24,6 +27,7 @@ import (
2427
"k8s.io/component-base/metrics/legacyregistry"
2528
klog "k8s.io/klog/v2"
2629
ctrl "sigs.k8s.io/controller-runtime"
30+
"sigs.k8s.io/controller-runtime/pkg/log/zap"
2731
"sigs.k8s.io/controller-runtime/pkg/metrics/filters"
2832
)
2933

@@ -62,6 +66,7 @@ var (
6266
"refreshMetricsInterval",
6367
runserver.DefaultRefreshMetricsInterval,
6468
"interval to refresh metrics")
69+
logVerbosity = flag.Int("v", logging.DEFAULT, "number for the log level verbosity")
6570

6671
scheme = runtime.NewScheme()
6772
)
@@ -72,10 +77,13 @@ func init() {
7277
}
7378

7479
func main() {
75-
klog.InitFlags(nil)
80+
opts := zap.Options{
81+
Development: true,
82+
}
83+
opts.BindFlags(flag.CommandLine)
7684
flag.Parse()
85+
initLogging(&opts)
7786

78-
ctrl.SetLogger(klog.TODO())
7987
cfg, err := ctrl.GetConfig()
8088
if err != nil {
8189
klog.Fatalf("Failed to get rest config: %v", err)
@@ -141,6 +149,25 @@ func main() {
141149
klog.Info("All components shutdown")
142150
}
143151

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

0 commit comments

Comments
 (0)