Skip to content

Commit 9fb4386

Browse files
Use klog structured logging
1 parent dabdf54 commit 9fb4386

File tree

5 files changed

+77
-30
lines changed

5 files changed

+77
-30
lines changed

cmd/main.go

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package main
1818

1919
import (
20+
"context"
2021
"flag"
2122
"os"
2223
"strings"
@@ -28,6 +29,8 @@ import (
2829
"k8s.io/client-go/kubernetes"
2930
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
3031
"k8s.io/client-go/tools/record"
32+
"k8s.io/klog/v2"
33+
"monis.app/mlog"
3134
ctrl "sigs.k8s.io/controller-runtime"
3235
"sigs.k8s.io/controller-runtime/pkg/healthz"
3336
"sigs.k8s.io/controller-runtime/pkg/log/zap"
@@ -44,7 +47,6 @@ import (
4447

4548
var (
4649
scheme = runtime.NewScheme()
47-
setupLog = ctrl.Log.WithName("setup")
4850
metricsAddr = flag.String("metrics-bind-address", ":8085", "The address the metric endpoint binds to.")
4951
enableLeaderElection = flag.Bool("leader-elect", false, "Enable leader election for controller manager. "+"Enabling this will ensure there is only one active controller manager.")
5052
leaderElectionNamespace = flag.String("leader-election-namespace", "", "Namespace for leader election")
@@ -53,6 +55,7 @@ var (
5355
providerVolumePath = flag.String("provider-volume", "/provider", "Volume path for provider.")
5456
maxCallRecvMsgSize = flag.Int("max-call-recv-msg-size", 1024*1024*4, "maximum size in bytes of gRPC response from plugins")
5557
versionInfo = flag.Bool("version", false, "Print the version and exit")
58+
logFormatJSON = flag.Bool("log-format-json", false, "set log formatter to json")
5659
)
5760

5861
func init() {
@@ -65,18 +68,31 @@ func init() {
6568
}
6669

6770
func runMain() error {
71+
klog.InitFlags(nil)
6872
opts := zap.Options{
6973
Development: true,
7074
}
7175
opts.BindFlags(flag.CommandLine)
7276
flag.Parse()
7377

78+
ctx := withShutdownSignal(context.Background())
79+
80+
defer mlog.Setup()()
81+
format := mlog.FormatText
82+
if *logFormatJSON {
83+
format = mlog.FormatJSON
84+
}
85+
if err := mlog.ValidateAndSetKlogLevelAndFormatGlobally(ctx, getKlogLevel(), format); err != nil {
86+
mlog.Error("failed to validate log level", err)
87+
return err
88+
}
89+
7490
ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
7591

7692
if *versionInfo {
7793
versionErr := version.PrintVersion()
7894
if versionErr != nil {
79-
setupLog.Error(versionErr, "failed to print version")
95+
klog.ErrorS(versionErr, "failed to print version")
8096
return versionErr
8197
}
8298
return nil
@@ -95,7 +111,7 @@ func runMain() error {
95111
LeaderElectionNamespace: *leaderElectionNamespace,
96112
})
97113
if err != nil {
98-
setupLog.Error(err, "unable to start manager")
114+
klog.ErrorS(err, "unable to start manager")
99115
return err
100116
}
101117

@@ -125,29 +141,49 @@ func runMain() error {
125141
Audiences: audiences,
126142
EventRecorder: record.NewBroadcaster().NewRecorder(scheme, corev1.EventSource{Component: "secret-sync-controller"}),
127143
}).SetupWithManager(mgr); err != nil {
128-
setupLog.Error(err, "unable to create controller", "controller", "SecretSync")
144+
klog.ErrorS(err, "unable to create controller", "controller", "SecretSync")
129145
return err
130146
}
131147
//+kubebuilder:scaffold:builder
132148

133149
if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
134-
setupLog.Error(err, "unable to set up health check")
150+
klog.ErrorS(err, "unable to set up health check")
135151
return err
136152
}
137153
if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil {
138-
setupLog.Error(err, "unable to set up ready check")
154+
klog.ErrorS(err, "unable to set up ready check")
139155
return err
140156
}
141157

142-
setupLog.Info("starting manager")
158+
klog.InfoS("starting manager")
143159
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
144-
setupLog.Error(err, "problem running manager")
160+
klog.ErrorS(err, "problem running manager")
145161
return err
146162
}
147163

148164
return nil
149165
}
150166

167+
// withShutdownSignal returns a copy of the parent context that will close if
168+
// the process receives termination signals.
169+
func withShutdownSignal(ctx context.Context) context.Context {
170+
nctx, cancel := context.WithCancel(ctx)
171+
defer cancel()
172+
return nctx
173+
}
174+
175+
func getKlogLevel() klog.Level {
176+
// hack around klog not exposing a Get method
177+
for i := klog.Level(0); i < 1_000_000; i++ {
178+
if klog.V(i).Enabled() {
179+
continue
180+
}
181+
return i - 1
182+
}
183+
184+
return -1
185+
}
186+
151187
func main() {
152188
if err := runMain(); err != nil {
153189
os.Exit(1)

go.mod

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ require (
1717
k8s.io/client-go v0.28.15
1818
k8s.io/klog/v2 v2.100.1
1919
k8s.io/utils v0.0.0-20240310230437-4693a0247e57
20+
monis.app/mlog v0.0.4
2021
sigs.k8s.io/controller-runtime v0.16.6
2122
sigs.k8s.io/secrets-store-csi-driver v1.4.8
2223
)
2324

2425
require (
2526
github.com/beorn7/perks v1.0.1 // indirect
27+
github.com/blang/semver/v4 v4.0.0 // indirect
2628
github.com/cespare/xxhash/v2 v2.2.0 // indirect
2729
github.com/davecgh/go-spew v1.1.1 // indirect
2830
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
@@ -42,6 +44,7 @@ require (
4244
github.com/google/gofuzz v1.2.0 // indirect
4345
github.com/google/uuid v1.3.1 // indirect
4446
github.com/imdario/mergo v0.3.12 // indirect
47+
github.com/inconshreveable/mousetrap v1.1.0 // indirect
4548
github.com/josharian/intern v1.0.0 // indirect
4649
github.com/json-iterator/go v1.1.12 // indirect
4750
github.com/mailru/easyjson v0.7.7 // indirect
@@ -57,6 +60,7 @@ require (
5760
github.com/prometheus/common v0.44.0 // indirect
5861
github.com/prometheus/procfs v0.10.1 // indirect
5962
github.com/rogpeppe/go-internal v1.12.0 // indirect
63+
github.com/spf13/cobra v1.7.0 // indirect
6064
github.com/spf13/pflag v1.0.5 // indirect
6165
go.opentelemetry.io/otel v1.15.1 // indirect
6266
go.opentelemetry.io/otel/sdk v1.15.1 // indirect

go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT
33
github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
44
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
55
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
6+
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
7+
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
68
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
79
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
10+
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
811
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
912
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1013
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -53,6 +56,8 @@ github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
5356
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
5457
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
5558
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
59+
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
60+
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
5661
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
5762
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
5863
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
@@ -98,6 +103,9 @@ github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+Pymzi
98103
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
99104
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
100105
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
106+
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
107+
github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
108+
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
101109
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
102110
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
103111
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -228,6 +236,8 @@ k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5Ohx
228236
k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM=
229237
k8s.io/utils v0.0.0-20240310230437-4693a0247e57 h1:gbqbevonBh57eILzModw6mrkbwM0gQBEuevE/AaBsHY=
230238
k8s.io/utils v0.0.0-20240310230437-4693a0247e57/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
239+
monis.app/mlog v0.0.4 h1:YEzh5sguG4ApywaRWnBU+mGP6SA4WxOqiJ36u+KtoeE=
240+
monis.app/mlog v0.0.4/go.mod h1:LtOpnndFuRGqnLBwzBvpA1DaoKuud2/moLzYXIiNl1s=
231241
sigs.k8s.io/controller-runtime v0.16.6 h1:FiXwTuFF5ZJKmozfP2Z0j7dh6kmxP4Ou1KLfxgKKC3I=
232242
sigs.k8s.io/controller-runtime v0.16.6/go.mod h1:+dQzkZxnylD0u49e0a+7AR+vlibEBaThmPca7lTyUsI=
233243
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=

internal/controller/conditions.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121

2222
"k8s.io/apimachinery/pkg/api/meta"
2323
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24-
"sigs.k8s.io/controller-runtime/pkg/log"
24+
"k8s.io/klog/v2"
2525

2626
secretsyncv1alpha1 "sigs.k8s.io/secrets-store-sync-controller/api/v1alpha1"
2727
)
@@ -89,14 +89,12 @@ var AllowedStringsToDisplayConditionErrorMessage = []string{
8989
}
9090

9191
func (r *SecretSyncReconciler) updateStatusConditions(ctx context.Context, ss *secretsyncv1alpha1.SecretSync, oldConditionType string, newConditionType string, conditionReason string, shouldUpdateStatus bool) {
92-
logger := log.FromContext(ctx)
93-
9492
if ss.Status.Conditions == nil {
9593
ss.Status.Conditions = []metav1.Condition{}
9694
}
9795

9896
if len(oldConditionType) > 0 {
99-
logger.V(10).Info("Removing old condition", "oldConditionType", oldConditionType)
97+
klog.V(10).InfoS("Removing old condition", "oldConditionType", oldConditionType)
10098
meta.RemoveStatusCondition(&ss.Status.Conditions, oldConditionType)
10199
}
102100

@@ -164,16 +162,16 @@ func (r *SecretSyncReconciler) updateStatusConditions(ctx context.Context, ss *s
164162
condition.Message = ConditionMessageUnknown
165163
}
166164

167-
logger.V(10).Info("Adding new condition", "newConditionType", newConditionType, "conditionReason", conditionReason)
165+
klog.V(10).InfoS("Adding new condition", "newConditionType", newConditionType, "conditionReason", conditionReason)
168166
meta.SetStatusCondition(&ss.Status.Conditions, condition)
169167

170168
if !shouldUpdateStatus {
171169
return
172170
}
173171

174172
if err := r.Client.Status().Update(ctx, ss); err != nil {
175-
logger.Error(err, "Failed to update status", "condition", condition)
173+
klog.ErrorS(err, "Failed to update status", "condition", condition)
176174
}
177175

178-
logger.V(10).Info("Updated status", "condition", condition)
176+
klog.V(10).InfoS("Updated status", "condition", condition)
179177
}

internal/controller/secretsync_controller.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ import (
3636
"k8s.io/apimachinery/pkg/types"
3737
"k8s.io/client-go/kubernetes"
3838
"k8s.io/client-go/tools/record"
39+
"k8s.io/klog/v2"
3940
ctrl "sigs.k8s.io/controller-runtime"
4041
"sigs.k8s.io/controller-runtime/pkg/client"
4142
"sigs.k8s.io/controller-runtime/pkg/event"
42-
"sigs.k8s.io/controller-runtime/pkg/log"
4343
"sigs.k8s.io/controller-runtime/pkg/predicate"
4444

4545
secretsstorecsiv1 "sigs.k8s.io/secrets-store-csi-driver/apis/v1"
@@ -107,13 +107,12 @@ type SecretSyncReconciler struct {
107107
//+kubebuilder:rbac:groups=secrets-store.csi.x-k8s.io,resources=secretproviderclasses,verbs=get;list;watch
108108

109109
func (r *SecretSyncReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
110-
logger := log.FromContext(ctx)
111-
logger.Info("Reconciling SecretSync", "namespace", req.NamespacedName.String())
110+
klog.InfoS("Reconciling SecretSync", "namespace", req.NamespacedName.String())
112111

113112
// get the secret sync object
114113
ss := &secretsyncv1alpha1.SecretSync{}
115114
if err := r.Get(ctx, req.NamespacedName, ss); err != nil {
116-
logger.Error(err, "unable to fetch SecretSync")
115+
klog.ErrorS(err, "unable to fetch SecretSync")
117116
return ctrl.Result{}, err
118117
}
119118

@@ -130,7 +129,7 @@ func (r *SecretSyncReconciler) Reconcile(ctx context.Context, req ctrl.Request)
130129
secretName := strings.TrimSpace(ss.Name)
131130
secretObj := ss.Spec.SecretObject
132131
if err := secretutil.ValidateSecretObject(secretName, secretObj); err != nil {
133-
logger.Error(err, "failed to validate secret object", "secretName", secretName)
132+
klog.ErrorS(err, "failed to validate secret object", "secretName", secretName)
134133
r.updateStatusConditions(ctx, ss, ConditionTypeUnknown, conditionType, ConditionReasonUserInputValidationFailed, true)
135134
return ctrl.Result{}, err
136135
}
@@ -143,7 +142,7 @@ func (r *SecretSyncReconciler) Reconcile(ctx context.Context, req ctrl.Request)
143142
// get the service account token
144143
serviceAccountTokenAttrs, err := r.TokenClient.SecretProviderServiceAccountTokenAttrs(ss.Namespace, ss.Spec.ServiceAccountName, r.Audiences)
145144
if err != nil {
146-
logger.Error(err, "failed to get service account token", "name", ss.Spec.ServiceAccountName)
145+
klog.ErrorS(err, "failed to get service account token", "name", ss.Spec.ServiceAccountName)
147146

148147
conditionReason := ConditionReasonSecretPatchFailedUnknownError
149148
if checkIfErrorMessageCanBeDisplayed(err.Error()) {
@@ -158,7 +157,7 @@ func (r *SecretSyncReconciler) Reconcile(ctx context.Context, req ctrl.Request)
158157
// get the secret provider class object
159158
spc := &secretsstorecsiv1.SecretProviderClass{}
160159
if err := r.Get(ctx, client.ObjectKey{Name: ss.Spec.SecretProviderClassName, Namespace: req.Namespace}, spc); err != nil {
161-
logger.Error(err, "failed to get secret provider class", "name", ss.Spec.SecretProviderClassName)
160+
klog.ErrorS(err, "failed to get secret provider class", "name", ss.Spec.SecretProviderClassName)
162161
r.updateStatusConditions(ctx, ss, ConditionTypeUnknown, conditionType, ConditionReasonControllerSpcError, true)
163162
return ctrl.Result{}, err
164163
}
@@ -180,15 +179,15 @@ func (r *SecretSyncReconciler) Reconcile(ctx context.Context, req ctrl.Request)
180179

181180
paramsJSON, err := json.Marshal(parameters)
182181
if err != nil {
183-
logger.Error(err, "failed to marshal parameters")
182+
klog.ErrorS(err, "failed to marshal parameters")
184183
r.updateStatusConditions(ctx, ss, ConditionTypeUnknown, conditionType, ConditionReasonControllerInternalError, true)
185184
return ctrl.Result{}, err
186185
}
187186

188187
providerName := string(spc.Spec.Provider)
189188
providerClient, err := r.ProviderClients.Get(ctx, providerName)
190189
if err != nil {
191-
logger.Error(err, "failed to get provider client", "provider", providerName)
190+
klog.ErrorS(err, "failed to get provider client", "provider", providerName)
192191
r.updateStatusConditions(ctx, ss, ConditionTypeUnknown, conditionType, ConditionReasonControllerSpcError, true)
193192
return ctrl.Result{}, err
194193
}
@@ -197,7 +196,7 @@ func (r *SecretSyncReconciler) Reconcile(ctx context.Context, req ctrl.Request)
197196
var secretsJSON []byte
198197
secretsJSON, err = json.Marshal(secretRefData)
199198
if err != nil {
200-
logger.Error(err, "failed to marshal secret")
199+
klog.ErrorS(err, "failed to marshal secret")
201200
r.updateStatusConditions(ctx, ss, ConditionTypeUnknown, conditionType, ConditionReasonControllerInternalError, true)
202201
return ctrl.Result{}, err
203202
}
@@ -206,23 +205,23 @@ func (r *SecretSyncReconciler) Reconcile(ctx context.Context, req ctrl.Request)
206205

207206
objectVersions, files, err := provider.MountContent(ctx, providerClient, string(paramsJSON), string(secretsJSON), oldObjectVersions)
208207
if err != nil {
209-
logger.Error(err, "failed to get secrets from provider", "provider", providerName)
208+
klog.ErrorS(err, "failed to get secrets from provider", "provider", providerName)
210209
r.updateStatusConditions(ctx, ss, ConditionTypeUnknown, conditionType, ConditionReasonFailedProviderError, true)
211210
return ctrl.Result{}, err
212211
}
213212

214213
secretType := secretutil.GetSecretType(strings.TrimSpace(secretObj.Type))
215214
var datamap map[string][]byte
216215
if datamap, err = secretutil.GetSecretData(secretObj.Data, secretType, files); err != nil {
217-
logger.Error(err, "failed to get secret data", "secretName", secretName)
216+
klog.ErrorS(err, "failed to get secret data", "secretName", secretName)
218217
r.updateStatusConditions(ctx, ss, ConditionTypeUnknown, conditionType, ConditionReasonUserInputValidationFailed, true)
219218
return ctrl.Result{}, err
220219
}
221220

222221
// Compute the hash of the secret
223222
syncHash, err := r.computeSecretDataObjectHash(datamap, spc, ss)
224223
if err != nil {
225-
logger.Error(err, "failed to compute secret data object hash", "secretName", secretName)
224+
klog.ErrorS(err, "failed to compute secret data object hash", "secretName", secretName)
226225
return ctrl.Result{}, err
227226
}
228227

@@ -263,7 +262,7 @@ func (r *SecretSyncReconciler) Reconcile(ctx context.Context, req ctrl.Request)
263262

264263
// Attempt to create or update the secret.
265264
if err = r.serverSidePatchSecret(ctx, ss, secretName, req.Namespace, datamap, objectVersions, labels, annotations, secretType); err != nil {
266-
logger.Error(err, "failed to patch secret", "secretName", secretName)
265+
klog.ErrorS(err, "failed to patch secret", "secretName", secretName)
267266

268267
// Rollback to the previous hash and the previous last successful sync time.
269268
ss.Status.SyncHash = prevSecretHash
@@ -296,7 +295,7 @@ func (r *SecretSyncReconciler) Reconcile(ctx context.Context, req ctrl.Request)
296295
return ctrl.Result{}, err
297296
}
298297

299-
logger.V(4).Info("Done... updated status", "syncHash", syncHash, "lastSuccessfulSyncTime", ss.Status.LastSuccessfulSyncTime)
298+
klog.V(4).InfoS("Done... updated status", "syncHash", syncHash, "lastSuccessfulSyncTime", ss.Status.LastSuccessfulSyncTime)
300299
return ctrl.Result{}, nil
301300
}
302301

0 commit comments

Comments
 (0)