From a415246adc8732fb591e82eb6e857f7f95f37490 Mon Sep 17 00:00:00 2001 From: Lemon-miaow Date: Tue, 22 Sep 2026 20:25:39 +0800 Subject: [PATCH] fix(operator): give controller-runtime a logger instead of a goroutine stack Without SetLogger, the first reconcile prints '[controller-runtime] log.SetLogger(...) was never called; logs will not be displayed' followed by a full stack trace (live-observed in felis-operator). Route it through logr.FromSlogHandler(slog.Default()) so its messages are ordinary stderr lines; go-logr/logr promoted to a direct dependency. --- cmd/felis/operator.go | 8 ++++++++ go.mod | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/cmd/felis/operator.go b/cmd/felis/operator.go index fbc950c..779213e 100644 --- a/cmd/felis/operator.go +++ b/cmd/felis/operator.go @@ -4,11 +4,13 @@ import ( "flag" "fmt" "io" + "log/slog" "os" "felis.lolicon.best/internal/apis/felis/v1alpha1" felismetrics "felis.lolicon.best/internal/metrics" "felis.lolicon.best/internal/operator" + "github.com/go-logr/logr" "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" @@ -42,6 +44,12 @@ func cmdOperator(args []string, _, stderr io.Writer) int { utilruntime.Must(clientgoscheme.AddToScheme(scheme)) utilruntime.Must(v1alpha1.AddToScheme(scheme)) + // controller-runtime logs through its own logr sink; without one, its first + // reconcile prints "log.SetLogger(...) was never called" ATTACHED TO A FULL + // GOROUTINE STACK — pure noise, not signal. Route it to slog's default handler + // so its messages appear as ordinary stderr lines. + ctrl.SetLogger(logr.FromSlogHandler(slog.Default().Handler())) + mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ Scheme: scheme, Metrics: metricsserver.Options{BindAddress: *metricsAddr}, diff --git a/go.mod b/go.mod index f5532ab..20f0b03 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/charmbracelet/huh v1.0.0 github.com/charmbracelet/lipgloss v1.1.0 github.com/descope/virtualwebauthn v1.0.5 + github.com/go-logr/logr v1.4.2 github.com/go-webauthn/webauthn v0.17.4 github.com/golang-jwt/jwt/v5 v5.3.1 github.com/google/uuid v1.6.0 @@ -42,7 +43,6 @@ require ( github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/evanphx/json-patch/v5 v5.9.0 // indirect github.com/fxamacker/cbor/v2 v2.9.2 // indirect - github.com/go-logr/logr v1.4.2 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.4 // indirect