Skip to content

Commit ecee73e

Browse files
committed
Fix up example to make use of logr
The example sets up logr, and then uses the built-in go `log` package. We should show people how to make use of logr instead.
1 parent a173375 commit ecee73e

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

example/main.go

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ package main
1919
import (
2020
"context"
2121
"flag"
22-
"log"
22+
"os"
2323

24+
"github.com/go-logr/logr"
2425
appsv1 "k8s.io/api/apps/v1"
2526
corev1 "k8s.io/api/core/v1"
2627
"k8s.io/apimachinery/pkg/api/errors"
@@ -36,63 +37,78 @@ import (
3637
"sigs.k8s.io/controller-runtime/pkg/source"
3738
)
3839

40+
var (
41+
log = logf.Log.WithName("example-controller")
42+
)
43+
3944
func main() {
4045
flag.Parse()
4146
logf.SetLogger(logf.ZapLogger(false))
47+
entryLog := log.WithName("entrypoint")
4248

4349
// Setup a Manager
4450
mrg, err := manager.New(config.GetConfigOrDie(), manager.Options{})
4551
if err != nil {
46-
log.Fatal(err)
52+
entryLog.Error(err, "unable to set up overall controller manager")
53+
os.Exit(1)
4754
}
4855

4956
// Setup a new controller to Reconciler ReplicaSets
5057
c, err := controller.New("foo-controller", mrg, controller.Options{
51-
Reconciler: &reconcileReplicaSet{client: mrg.GetClient()},
58+
Reconciler: &reconcileReplicaSet{client: mrg.GetClient(), log: log.WithName("reconciler")},
5259
})
5360
if err != nil {
54-
log.Fatal(err)
61+
entryLog.Error(err, "unable to set up individual controller")
62+
os.Exit(1)
5563
}
5664

5765
// Watch ReplicaSets and enqueue ReplicaSet object key
5866
if err := c.Watch(&source.Kind{Type: &appsv1.ReplicaSet{}}, &handler.EnqueueRequestForObject{}); err != nil {
59-
log.Fatal(err)
67+
entryLog.Error(err, "unable to watch ReplicaSets")
68+
os.Exit(1)
6069
}
6170

6271
// Watch Pods and enqueue owning ReplicaSet key
6372
if err := c.Watch(&source.Kind{Type: &corev1.Pod{}},
6473
&handler.EnqueueRequestForOwner{OwnerType: &appsv1.ReplicaSet{}, IsController: true}); err != nil {
65-
log.Fatal(err)
74+
entryLog.Error(err, "unable to watch Pods")
75+
os.Exit(1)
6676
}
6777

68-
log.Fatal(mrg.Start(signals.SetupSignalHandler()))
78+
if err := mrg.Start(signals.SetupSignalHandler()); err != nil {
79+
entryLog.Error(err, "unable to run manager")
80+
os.Exit(1)
81+
}
6982
}
7083

7184
// reconcileReplicaSet reconciles ReplicaSets
7285
type reconcileReplicaSet struct {
7386
client client.Client
87+
log logr.Logger
7488
}
7589

7690
// Implement reconcile.Reconciler so the controller can reconcile objects
7791
var _ reconcile.Reconciler = &reconcileReplicaSet{}
7892

7993
func (r *reconcileReplicaSet) Reconcile(request reconcile.Request) (reconcile.Result, error) {
94+
// set up a convinient log object so we don't have to type request over and over again
95+
log := r.log.WithValues("request", request)
96+
8097
// Fetch the ReplicaSet from the cache
8198
rs := &appsv1.ReplicaSet{}
8299
err := r.client.Get(context.TODO(), request.NamespacedName, rs)
83100
if errors.IsNotFound(err) {
84-
log.Printf("Could not find ReplicaSet %v.\n", request)
101+
log.Error(nil, "Could not find ReplicaSet")
85102
return reconcile.Result{}, nil
86103
}
87104

88105
if err != nil {
89-
log.Printf("Could not fetch ReplicaSet %v for %+v\n", err, request)
106+
log.Error(err, "Could not fetch ReplicaSet")
90107
return reconcile.Result{}, err
91108
}
92109

93110
// Print the ReplicaSet
94-
log.Printf("ReplicaSet Name %s Namespace %s, Pod Name: %s\n",
95-
rs.Name, rs.Namespace, rs.Spec.Template.Spec.Containers[0].Name)
111+
log.Info("Reconciling ReplicaSet", "container name", rs.Spec.Template.Spec.Containers[0].Name)
96112

97113
// Set the label if it is missing
98114
if rs.Labels == nil {
@@ -106,7 +122,7 @@ func (r *reconcileReplicaSet) Reconcile(request reconcile.Request) (reconcile.Re
106122
rs.Labels["hello"] = "world"
107123
err = r.client.Update(context.TODO(), rs)
108124
if err != nil {
109-
log.Printf("Could not write ReplicaSet %v\n", err)
125+
log.Error(err, "Could not write ReplicaSet")
110126
return reconcile.Result{}, err
111127
}
112128

0 commit comments

Comments
 (0)