Skip to content

Commit 4757f10

Browse files
committed
pkg/scaffold: replace std logger with package logger, configurable by user
1 parent f52f467 commit 4757f10

File tree

4 files changed

+48
-32
lines changed

4 files changed

+48
-32
lines changed

pkg/scaffold/cmd.go

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,62 +38,70 @@ const cmdTmpl = `package main
3838
3939
import (
4040
"flag"
41-
"log"
41+
"fmt"
4242
"runtime"
4343
4444
"{{ .Repo }}/pkg/apis"
4545
"{{ .Repo }}/pkg/controller"
4646
4747
"github.com/operator-framework/operator-sdk/pkg/k8sutil"
48+
"github.com/operator-framework/operator-sdk/pkg/sdk/log"
4849
sdkVersion "github.com/operator-framework/operator-sdk/version"
4950
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
5051
"sigs.k8s.io/controller-runtime/pkg/client/config"
5152
"sigs.k8s.io/controller-runtime/pkg/manager"
53+
rlog "sigs.k8s.io/controller-runtime/pkg/runtime/log"
5254
"sigs.k8s.io/controller-runtime/pkg/runtime/signals"
5355
)
5456
5557
func printVersion() {
56-
log.Printf("Go Version: %s", runtime.Version())
57-
log.Printf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH)
58-
log.Printf("operator-sdk Version: %v", sdkVersion.Version)
58+
log.Info(fmt.Sprintf("Go Version: %s", runtime.Version()))
59+
log.Info(fmt.Sprintf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH))
60+
log.Info(fmt.Sprintf("operator-sdk Version: %v", sdkVersion.Version))
5961
}
6062
6163
func main() {
6264
printVersion()
6365
flag.Parse()
6466
67+
// The logger instantiated here can be changed to any logger
68+
// implementing the logr.Logger interface. This logger will
69+
// be propagated through the whole operator, generating
70+
// uniform and structured logs.
71+
log.SetLogger(rlog.ZapLogger(false).WithName("{{ .ProjectName }}"))
72+
6573
namespace, err := k8sutil.GetWatchNamespace()
6674
if err != nil {
67-
log.Fatalf("failed to get watch namespace: %v", err)
75+
log.Fatal(err, "failed to get watch namespace")
6876
}
6977
7078
// Get a config to talk to the apiserver
7179
cfg, err := config.GetConfig()
7280
if err != nil {
73-
log.Fatal(err)
81+
log.Fatal(err, "")
7482
}
7583
7684
// Create a new Cmd to provide shared dependencies and start components
7785
mgr, err := manager.New(cfg, manager.Options{Namespace: namespace})
7886
if err != nil {
79-
log.Fatal(err)
87+
log.Fatal(err, "")
8088
}
8189
82-
log.Print("Registering Components.")
90+
log.Info("Registering Components.")
8391
8492
// Setup Scheme for all resources
8593
if err := apis.AddToScheme(mgr.GetScheme()); err != nil {
86-
log.Fatal(err)
94+
log.Fatal(err, "")
8795
}
8896
8997
// Setup all Controllers
9098
if err := controller.AddToManager(mgr); err != nil {
91-
log.Fatal(err)
99+
log.Fatal(err, "")
92100
}
93101
94-
log.Print("Starting the Cmd.")
102+
log.Info("Starting the Cmd.")
95103
96104
// Start the Cmd
97-
log.Fatal(mgr.Start(signals.SetupSignalHandler()))
105+
log.Fatal(mgr.Start(signals.SetupSignalHandler()), "manager exited non-zero")
98106
}
99107
`

pkg/scaffold/cmd_test.go

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,61 +35,69 @@ const cmdExp = `package main
3535
3636
import (
3737
"flag"
38-
"log"
38+
"fmt"
3939
"runtime"
4040
4141
"github.com/example-inc/app-operator/pkg/apis"
4242
"github.com/example-inc/app-operator/pkg/controller"
4343
"github.com/operator-framework/operator-sdk/pkg/k8sutil"
44+
"github.com/operator-framework/operator-sdk/pkg/sdk/log"
4445
sdkVersion "github.com/operator-framework/operator-sdk/version"
4546
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
4647
"sigs.k8s.io/controller-runtime/pkg/client/config"
4748
"sigs.k8s.io/controller-runtime/pkg/manager"
49+
rlog "sigs.k8s.io/controller-runtime/pkg/runtime/log"
4850
"sigs.k8s.io/controller-runtime/pkg/runtime/signals"
4951
)
5052
5153
func printVersion() {
52-
log.Printf("Go Version: %s", runtime.Version())
53-
log.Printf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH)
54-
log.Printf("operator-sdk Version: %v", sdkVersion.Version)
54+
log.Info(fmt.Sprintf("Go Version: %s", runtime.Version()))
55+
log.Info(fmt.Sprintf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH))
56+
log.Info(fmt.Sprintf("operator-sdk Version: %v", sdkVersion.Version))
5557
}
5658
5759
func main() {
5860
printVersion()
5961
flag.Parse()
6062
63+
// The logger instantiated here can be changed to any logger
64+
// implementing the logr.Logger interface. This logger will
65+
// be propagated through the whole operator, generating
66+
// uniform and structured logs.
67+
log.SetLogger(rlog.ZapLogger(false).WithName("app-operator"))
68+
6169
namespace, err := k8sutil.GetWatchNamespace()
6270
if err != nil {
63-
log.Fatalf("failed to get watch namespace: %v", err)
71+
log.Fatal(err, "failed to get watch namespace")
6472
}
6573
6674
// Get a config to talk to the apiserver
6775
cfg, err := config.GetConfig()
6876
if err != nil {
69-
log.Fatal(err)
77+
log.Fatal(err, "")
7078
}
7179
7280
// Create a new Cmd to provide shared dependencies and start components
7381
mgr, err := manager.New(cfg, manager.Options{Namespace: namespace})
7482
if err != nil {
75-
log.Fatal(err)
83+
log.Fatal(err, "")
7684
}
7785
78-
log.Print("Registering Components.")
86+
log.Info("Registering Components.")
7987
8088
// Setup Scheme for all resources
8189
if err := apis.AddToScheme(mgr.GetScheme()); err != nil {
82-
log.Fatal(err)
90+
log.Fatal(err, "")
8391
}
8492
8593
// Setup all Controllers
8694
if err := controller.AddToManager(mgr); err != nil {
87-
log.Fatal(err)
95+
log.Fatal(err, "")
8896
}
8997
90-
log.Print("Starting the Cmd.")
98+
log.Info("Starting the Cmd.")
9199
92100
// Start the Cmd
93-
log.Fatal(mgr.Start(signals.SetupSignalHandler()))
101+
log.Fatal(mgr.Start(signals.SetupSignalHandler()), "manager exited non-zero")
94102
}
95103
`

pkg/scaffold/controller_kind.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ const controllerKindTemplate = `package {{ .Resource.LowerKind }}
4343
4444
import (
4545
"context"
46-
"log"
4746
4847
{{ .Resource.Group}}{{ .Resource.Version }} "{{ .Repo }}/pkg/apis/{{ .Resource.Group}}/{{ .Resource.Version }}"
4948
49+
"github.com/operator-framework/operator-sdk/pkg/sdk/log"
5050
corev1 "k8s.io/api/core/v1"
5151
"k8s.io/apimachinery/pkg/api/errors"
5252
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -122,7 +122,7 @@ type Reconcile{{ .Resource.Kind }} struct {
122122
// The Controller will requeue the Request to be processed again if the returned error is non-nil or
123123
// Result.Requeue is true, otherwise upon completion it will remove the work from the queue.
124124
func (r *Reconcile{{ .Resource.Kind }}) Reconcile(request reconcile.Request) (reconcile.Result, error) {
125-
log.Printf("Reconciling {{ .Resource.Kind }} %s/%s\n", request.Namespace, request.Name)
125+
log.Info("Reconciling {{ .Resource.Kind }}", "Request.Namespace", request.Namespace, "Requst.Name", request.Name)
126126
127127
// Fetch the {{ .Resource.Kind }} instance
128128
instance := &{{ .Resource.Group}}{{ .Resource.Version }}.{{ .Resource.Kind }}{}
@@ -150,7 +150,7 @@ func (r *Reconcile{{ .Resource.Kind }}) Reconcile(request reconcile.Request) (re
150150
found := &corev1.Pod{}
151151
err = r.client.Get(context.TODO(), types.NamespacedName{Name: pod.Name, Namespace: pod.Namespace}, found)
152152
if err != nil && errors.IsNotFound(err) {
153-
log.Printf("Creating a new Pod %s/%s\n", pod.Namespace, pod.Name)
153+
log.Info("Creating a new Pod", "Pod.Namespace", pod.Namespace, "Pod.Name", pod.Name)
154154
err = r.client.Create(context.TODO(), pod)
155155
if err != nil {
156156
return reconcile.Result{}, err
@@ -163,7 +163,7 @@ func (r *Reconcile{{ .Resource.Kind }}) Reconcile(request reconcile.Request) (re
163163
}
164164
165165
// Pod already exists - don't requeue
166-
log.Printf("Skip reconcile: Pod %s/%s already exists", found.Namespace, found.Name)
166+
log.Info("Skip reconcile: Pod already exists", "Pod.Namespace", found.Namespace, "Pod.Name", found.Name)
167167
return reconcile.Result{}, nil
168168
}
169169

pkg/scaffold/controller_kind_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ const controllerKindExp = `package appservice
3939
4040
import (
4141
"context"
42-
"log"
4342
4443
appv1alpha1 "github.com/example-inc/app-operator/pkg/apis/app/v1alpha1"
44+
"github.com/operator-framework/operator-sdk/pkg/sdk/log"
4545
corev1 "k8s.io/api/core/v1"
4646
"k8s.io/apimachinery/pkg/api/errors"
4747
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -117,7 +117,7 @@ type ReconcileAppService struct {
117117
// The Controller will requeue the Request to be processed again if the returned error is non-nil or
118118
// Result.Requeue is true, otherwise upon completion it will remove the work from the queue.
119119
func (r *ReconcileAppService) Reconcile(request reconcile.Request) (reconcile.Result, error) {
120-
log.Printf("Reconciling AppService %s/%s\n", request.Namespace, request.Name)
120+
log.Info("Reconciling AppService", "Request.Namespace", request.Namespace, "Requst.Name", request.Name)
121121
122122
// Fetch the AppService instance
123123
instance := &appv1alpha1.AppService{}
@@ -145,7 +145,7 @@ func (r *ReconcileAppService) Reconcile(request reconcile.Request) (reconcile.Re
145145
found := &corev1.Pod{}
146146
err = r.client.Get(context.TODO(), types.NamespacedName{Name: pod.Name, Namespace: pod.Namespace}, found)
147147
if err != nil && errors.IsNotFound(err) {
148-
log.Printf("Creating a new Pod %s/%s\n", pod.Namespace, pod.Name)
148+
log.Info("Creating a new Pod", "Pod.Namespace", pod.Namespace, "Pod.Name", pod.Name)
149149
err = r.client.Create(context.TODO(), pod)
150150
if err != nil {
151151
return reconcile.Result{}, err
@@ -158,7 +158,7 @@ func (r *ReconcileAppService) Reconcile(request reconcile.Request) (reconcile.Re
158158
}
159159
160160
// Pod already exists - don't requeue
161-
log.Printf("Skip reconcile: Pod %s/%s already exists", found.Namespace, found.Name)
161+
log.Info("Skip reconcile: Pod already exists", "Pod.Namespace", found.Namespace, "Pod.Name", found.Name)
162162
return reconcile.Result{}, nil
163163
}
164164

0 commit comments

Comments
 (0)