diff --git a/TMP-LOGGING.md b/TMP-LOGGING.md index a6b6c619b5..2bb5dda888 100644 --- a/TMP-LOGGING.md +++ b/TMP-LOGGING.md @@ -48,11 +48,11 @@ provides some helpers to make it easy to use [Zap](https://go.uber.org/zap) as the implementation. You can configure the logging implementation using -`"sigs.k8s.io/controller-runtime/pkg/runtime/log".SetLogger`. That +`"sigs.k8s.io/controller-runtime/pkg/log".SetLogger`. That package also contains the convinience functions for setting up Zap. You can get a handle to the the "root" logger using -`"sigs.k8s.io/controller-runtime/pkg/runtime/log".Log`, and can then call +`"sigs.k8s.io/controller-runtime/pkg/log".Log`, and can then call `WithName` to create individual named loggers. You can call `WithName` repeatedly to chain names together: diff --git a/alias.go b/alias.go index d5a21b1f38..da85ceeb28 100644 --- a/alias.go +++ b/alias.go @@ -26,7 +26,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/reconcile" - "sigs.k8s.io/controller-runtime/pkg/runtime/log" + "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/runtime/scheme" "sigs.k8s.io/controller-runtime/pkg/runtime/signals" ) @@ -126,10 +126,4 @@ var ( // SetLogger sets a concrete logging implementation for all deferred Loggers. SetLogger = log.SetLogger - - // ZapLogger is a Logger implementation. - // If development is true, a Zap development config will be used - // (stacktraces on warnings, no sampling), otherwise a Zap production - // config will be used (stacktraces on errors, sampling). - ZapLogger = log.ZapLogger ) diff --git a/example/main.go b/example/main.go index fa3b52b89a..e0af176285 100644 --- a/example/main.go +++ b/example/main.go @@ -29,7 +29,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/manager" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" "sigs.k8s.io/controller-runtime/pkg/runtime/signals" "sigs.k8s.io/controller-runtime/pkg/source" "sigs.k8s.io/controller-runtime/pkg/webhook" @@ -44,7 +45,7 @@ func main() { "disable the installer in the webhook server, so it won't install webhook configuration resources during bootstrapping") flag.Parse() - logf.SetLogger(logf.ZapLogger(false)) + logf.SetLogger(zap.Logger(false)) entryLog := log.WithName("entrypoint") // Setup a Manager diff --git a/pkg/builder/builder_suite_test.go b/pkg/builder/builder_suite_test.go index 39d42eed6e..46ee514ac5 100644 --- a/pkg/builder/builder_suite_test.go +++ b/pkg/builder/builder_suite_test.go @@ -24,7 +24,8 @@ import ( "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/envtest" "sigs.k8s.io/controller-runtime/pkg/metrics" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -36,7 +37,7 @@ var testenv *envtest.Environment var cfg *rest.Config var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) testenv = &envtest.Environment{} diff --git a/pkg/builder/example_test.go b/pkg/builder/example_test.go index a966eed456..00eafb0baf 100644 --- a/pkg/builder/example_test.go +++ b/pkg/builder/example_test.go @@ -21,7 +21,7 @@ import ( "fmt" "os" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index cb87d8f385..c6f3e6971f 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -29,10 +29,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/cache/internal" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" ) -var log = logf.KBLog.WithName("object-cache") +var log = logf.RuntimeLog.WithName("object-cache") // Cache implements CacheReader by reading objects from a cache populated by InformersMap type Cache interface { diff --git a/pkg/cache/cache_suite_test.go b/pkg/cache/cache_suite_test.go index 20736ab22c..1459a9178a 100644 --- a/pkg/cache/cache_suite_test.go +++ b/pkg/cache/cache_suite_test.go @@ -24,7 +24,8 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -37,7 +38,7 @@ var cfg *rest.Config var clientset *kubernetes.Clientset var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) testenv = &envtest.Environment{} diff --git a/pkg/client/client_suite_test.go b/pkg/client/client_suite_test.go index 0c9cc9d458..dbdafbfa86 100644 --- a/pkg/client/client_suite_test.go +++ b/pkg/client/client_suite_test.go @@ -25,7 +25,8 @@ import ( "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -38,7 +39,7 @@ var cfg *rest.Config var clientset *kubernetes.Clientset var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) testenv = &envtest.Environment{} diff --git a/pkg/client/config/config.go b/pkg/client/config/config.go index a57d48767f..4ca4f20deb 100644 --- a/pkg/client/config/config.go +++ b/pkg/client/config/config.go @@ -25,12 +25,12 @@ import ( "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" ) var ( kubeconfig, masterURL string - log = logf.KBLog.WithName("client").WithName("config") + log = logf.RuntimeLog.WithName("client").WithName("config") ) func init() { diff --git a/pkg/client/fake/client.go b/pkg/client/fake/client.go index 09055a5bac..ee5e537b93 100644 --- a/pkg/client/fake/client.go +++ b/pkg/client/fake/client.go @@ -31,11 +31,11 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" ) var ( - log = logf.KBLog.WithName("fake-client") + log = logf.RuntimeLog.WithName("fake-client") ) type fakeClient struct { diff --git a/pkg/client/fake/client_suite_test.go b/pkg/client/fake/client_suite_test.go index 7adea0cdda..7342148c47 100644 --- a/pkg/client/fake/client_suite_test.go +++ b/pkg/client/fake/client_suite_test.go @@ -23,7 +23,8 @@ import ( . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -32,6 +33,6 @@ func TestSource(t *testing.T) { } var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) close(done) }, 60) diff --git a/pkg/controller/controller_suite_test.go b/pkg/controller/controller_suite_test.go index 9749f99cb4..ec730a2168 100644 --- a/pkg/controller/controller_suite_test.go +++ b/pkg/controller/controller_suite_test.go @@ -25,7 +25,8 @@ import ( "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/envtest" "sigs.k8s.io/controller-runtime/pkg/metrics" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -38,7 +39,7 @@ var cfg *rest.Config var clientset *kubernetes.Clientset var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) testenv = &envtest.Environment{} diff --git a/pkg/controller/controllerutil/example_test.go b/pkg/controller/controllerutil/example_test.go index 82bb067916..f340f623fc 100644 --- a/pkg/controller/controllerutil/example_test.go +++ b/pkg/controller/controllerutil/example_test.go @@ -25,7 +25,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" ) var ( diff --git a/pkg/controller/example_test.go b/pkg/controller/example_test.go index 2628822075..4c2a0de947 100644 --- a/pkg/controller/example_test.go +++ b/pkg/controller/example_test.go @@ -26,7 +26,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/reconcile" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/runtime/signals" "sigs.k8s.io/controller-runtime/pkg/source" ) diff --git a/pkg/envtest/envtest_suite_test.go b/pkg/envtest/envtest_suite_test.go index a8c4c32f3b..46aba52138 100644 --- a/pkg/envtest/envtest_suite_test.go +++ b/pkg/envtest/envtest_suite_test.go @@ -21,7 +21,8 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -32,7 +33,7 @@ func TestSource(t *testing.T) { var env *Environment var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) env = &Environment{} _, err := env.Start() Expect(err).NotTo(HaveOccurred()) diff --git a/pkg/handler/enqueue.go b/pkg/handler/enqueue.go index 9ddda5be6e..2d0d4a6bda 100644 --- a/pkg/handler/enqueue.go +++ b/pkg/handler/enqueue.go @@ -21,10 +21,10 @@ import ( "k8s.io/client-go/util/workqueue" "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/reconcile" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" ) -var enqueueLog = logf.KBLog.WithName("eventhandler").WithName("EnqueueRequestForObject") +var enqueueLog = logf.RuntimeLog.WithName("eventhandler").WithName("EnqueueRequestForObject") var _ EventHandler = &EnqueueRequestForObject{} diff --git a/pkg/handler/enqueue_owner.go b/pkg/handler/enqueue_owner.go index a5b1076808..2e0b492803 100644 --- a/pkg/handler/enqueue_owner.go +++ b/pkg/handler/enqueue_owner.go @@ -27,12 +27,12 @@ import ( "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/controller-runtime/pkg/runtime/inject" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" ) var _ EventHandler = &EnqueueRequestForOwner{} -var log = logf.KBLog.WithName("eventhandler").WithName("EnqueueRequestForOwner") +var log = logf.RuntimeLog.WithName("eventhandler").WithName("EnqueueRequestForOwner") // EnqueueRequestForOwner enqueues Requests for the Owners of an object. E.g. the object that created // the object that was the source of the Event. diff --git a/pkg/handler/eventhandler_suite_test.go b/pkg/handler/eventhandler_suite_test.go index ee824d35d0..7fd222e590 100644 --- a/pkg/handler/eventhandler_suite_test.go +++ b/pkg/handler/eventhandler_suite_test.go @@ -22,7 +22,8 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestEventhandler(t *testing.T) { @@ -31,5 +32,5 @@ func TestEventhandler(t *testing.T) { } var _ = BeforeSuite(func() { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) }) diff --git a/pkg/internal/admission/http.go b/pkg/internal/admission/http.go index b1ae833108..49ddb4ad16 100644 --- a/pkg/internal/admission/http.go +++ b/pkg/internal/admission/http.go @@ -23,12 +23,12 @@ import ( "k8s.io/api/admission/v1beta1" "k8s.io/apimachinery/pkg/runtime" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" ) var ( // TODO(directxman12): this shouldn't be a global log - log = logf.KBLog.WithName("admission").WithName("http-handler") + log = logf.RuntimeLog.WithName("admission").WithName("http-handler") ) func (h httpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { diff --git a/pkg/internal/controller/controller.go b/pkg/internal/controller/controller.go index 6a44ea9fc3..cbf01de149 100644 --- a/pkg/internal/controller/controller.go +++ b/pkg/internal/controller/controller.go @@ -34,11 +34,11 @@ import ( "sigs.k8s.io/controller-runtime/pkg/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/controller-runtime/pkg/runtime/inject" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" "sigs.k8s.io/controller-runtime/pkg/source" ) -var log = logf.KBLog.WithName("controller") +var log = logf.RuntimeLog.WithName("controller") var _ inject.Injector = &Controller{} diff --git a/pkg/internal/controller/controller_suite_test.go b/pkg/internal/controller/controller_suite_test.go index 9efb85391e..36cb52559f 100644 --- a/pkg/internal/controller/controller_suite_test.go +++ b/pkg/internal/controller/controller_suite_test.go @@ -24,7 +24,8 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -37,7 +38,7 @@ var cfg *rest.Config var clientset *kubernetes.Clientset var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) testenv = &envtest.Environment{} diff --git a/pkg/internal/log/log.go b/pkg/internal/log/log.go new file mode 100644 index 0000000000..0d671b73d6 --- /dev/null +++ b/pkg/internal/log/log.go @@ -0,0 +1,35 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package log contains utilities for fetching a new logger +// when one is not already available. +// Deprecated: use pkg/log +package log + +import ( + "github.com/go-logr/logr" + + "sigs.k8s.io/controller-runtime/pkg/log" +) + +var ( + // RuntimeLog is a base parent logger for use inside controller-runtime. + RuntimeLog logr.Logger +) + +func init() { + RuntimeLog = log.Log.WithName("controller-runtime") +} diff --git a/pkg/internal/recorder/recorder_suite_test.go b/pkg/internal/recorder/recorder_suite_test.go index b8666a3391..d50270604b 100644 --- a/pkg/internal/recorder/recorder_suite_test.go +++ b/pkg/internal/recorder/recorder_suite_test.go @@ -24,7 +24,8 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestRecorder(t *testing.T) { @@ -37,7 +38,7 @@ var cfg *rest.Config var clientset *kubernetes.Clientset var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) testenv = &envtest.Environment{} diff --git a/pkg/runtime/log/deleg.go b/pkg/log/deleg.go similarity index 100% rename from pkg/runtime/log/deleg.go rename to pkg/log/deleg.go diff --git a/pkg/log/log.go b/pkg/log/log.go new file mode 100644 index 0000000000..b541231967 --- /dev/null +++ b/pkg/log/log.go @@ -0,0 +1,34 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package log contains utilities for fetching a new logger +// when one is not already available. +// Deprecated: use pkg/log +package log + +import ( + "github.com/go-logr/logr" +) + +// SetLogger sets a concrete logging implementation for all deferred Loggers. +func SetLogger(l logr.Logger) { + Log.Fulfill(l) +} + +// Log is the base logger used by kubebuilder. It delegates +// to another logr.Logger. You *must* call SetLogger to +// get any actual logging. +var Log = NewDelegatingLogger(NullLogger{}) diff --git a/pkg/runtime/log/log_suite_test.go b/pkg/log/log_suite_test.go similarity index 88% rename from pkg/runtime/log/log_suite_test.go rename to pkg/log/log_suite_test.go index a78b451060..3fb749caca 100644 --- a/pkg/runtime/log/log_suite_test.go +++ b/pkg/log/log_suite_test.go @@ -26,5 +26,5 @@ import ( func TestSource(t *testing.T) { RegisterFailHandler(Fail) - RunSpecsWithDefaultAndCustomReporters(t, "Runtime Log Suite", []Reporter{printer.NewlineReporter{}}) + RunSpecsWithDefaultAndCustomReporters(t, "Log Suite", []Reporter{printer.NewlineReporter{}}) } diff --git a/pkg/runtime/log/log_test.go b/pkg/log/log_test.go similarity index 61% rename from pkg/runtime/log/log_test.go rename to pkg/log/log_test.go index 044e314a85..1ec5f51e0c 100644 --- a/pkg/runtime/log/log_test.go +++ b/pkg/log/log_test.go @@ -17,35 +17,12 @@ limitations under the License. package log import ( - "bytes" - "encoding/json" - "io/ioutil" "github.com/go-logr/logr" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" - kapi "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/types" ) -// testStringer is a fmt.Stringer -type testStringer struct{} - -func (testStringer) String() string { - return "value" -} - -// fakeSyncWriter is a fake zap.SyncerWriter that lets us test if sync was called -type fakeSyncWriter bool - -func (w *fakeSyncWriter) Write(p []byte) (int, error) { - return len(p), nil -} -func (w *fakeSyncWriter) Sync() error { - *w = true - return nil -} - // logInfo is the information for a particular fakeLogger message type logInfo struct { name []string @@ -112,7 +89,7 @@ func (f *fakeLogger) Info(msg string, vals ...interface{}) { func (f *fakeLogger) Enabled() bool { return true } func (f *fakeLogger) V(lvl int) logr.InfoLogger { return f } -var _ = Describe("runtime log", func() { +var _ = Describe("logging", func() { Describe("top-level logger", func() { It("hold newly created loggers until a logger is set", func() { @@ -238,122 +215,4 @@ var _ = Describe("runtime log", func() { )) }) }) - - Describe("Zap logger setup", func() { - Context("with the default output", func() { - It("shouldn't fail when setting up production", func() { - Expect(ZapLogger(false)).NotTo(BeNil()) - }) - - It("shouldn't fail when setting up development", func() { - Expect(ZapLogger(true)).NotTo(BeNil()) - }) - }) - - Context("with custom non-sync output", func() { - It("shouldn't fail when setting up production", func() { - Expect(ZapLoggerTo(ioutil.Discard, false)).NotTo(BeNil()) - }) - - It("shouldn't fail when setting up development", func() { - Expect(ZapLoggerTo(ioutil.Discard, true)).NotTo(BeNil()) - }) - }) - - Context("when logging kubernetes objects", func() { - var logOut *bytes.Buffer - var logger logr.Logger - - BeforeEach(func() { - logOut = new(bytes.Buffer) - By("setting up the logger") - // use production settings (false) to get just json output - logger = ZapLoggerTo(logOut, false) - }) - - It("should log a standard namespaced Kubernetes object name and namespace", func() { - pod := &kapi.Pod{} - pod.Name = "some-pod" - pod.Namespace = "some-ns" - logger.Info("here's a kubernetes object", "thing", pod) - - outRaw := logOut.Bytes() - res := map[string]interface{}{} - Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) - - Expect(res).To(HaveKeyWithValue("thing", map[string]interface{}{ - "name": pod.Name, - "namespace": pod.Namespace, - })) - }) - - It("should work fine with normal stringers", func() { - logger.Info("here's a non-kubernetes stringer", "thing", testStringer{}) - outRaw := logOut.Bytes() - res := map[string]interface{}{} - Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) - - Expect(res).To(HaveKeyWithValue("thing", "value")) - }) - - It("should log a standard non-namespaced Kubernetes object name", func() { - node := &kapi.Node{} - node.Name = "some-node" - logger.Info("here's a kubernetes object", "thing", node) - - outRaw := logOut.Bytes() - res := map[string]interface{}{} - Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) - - Expect(res).To(HaveKeyWithValue("thing", map[string]interface{}{ - "name": node.Name, - })) - }) - - It("should log a standard Kubernetes object's kind, if set", func() { - node := &kapi.Node{} - node.Name = "some-node" - node.APIVersion = "v1" - node.Kind = "Node" - logger.Info("here's a kubernetes object", "thing", node) - - outRaw := logOut.Bytes() - res := map[string]interface{}{} - Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) - - Expect(res).To(HaveKeyWithValue("thing", map[string]interface{}{ - "name": node.Name, - "apiVersion": "v1", - "kind": "Node", - })) - }) - - It("should log a standard non-namespaced NamespacedName name", func() { - name := types.NamespacedName{Name: "some-node"} - logger.Info("here's a kubernetes object", "thing", name) - - outRaw := logOut.Bytes() - res := map[string]interface{}{} - Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) - - Expect(res).To(HaveKeyWithValue("thing", map[string]interface{}{ - "name": name.Name, - })) - }) - - It("should log a standard namespaced NamespacedName name and namespace", func() { - name := types.NamespacedName{Name: "some-pod", Namespace: "some-ns"} - logger.Info("here's a kubernetes object", "thing", name) - - outRaw := logOut.Bytes() - res := map[string]interface{}{} - Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) - - Expect(res).To(HaveKeyWithValue("thing", map[string]interface{}{ - "name": name.Name, - "namespace": name.Namespace, - })) - }) - }) - }) }) diff --git a/pkg/runtime/log/null.go b/pkg/log/null.go similarity index 100% rename from pkg/runtime/log/null.go rename to pkg/log/null.go diff --git a/pkg/runtime/log/kube_helpers.go b/pkg/log/zap/kube_helpers.go similarity index 96% rename from pkg/runtime/log/kube_helpers.go rename to pkg/log/zap/kube_helpers.go index f07d1e6008..c88ba56cdc 100644 --- a/pkg/runtime/log/kube_helpers.go +++ b/pkg/log/zap/kube_helpers.go @@ -1,5 +1,5 @@ /* -Copyright 2018 The Kubernetes Authors. +Copyright 2019 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,9 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Package log contains utilities for fetching a new logger -// when one is not already available. -package log +package zap import ( "fmt" @@ -127,3 +125,4 @@ func (k *KubeAwareEncoder) EncodeEntry(entry zapcore.Entry, fields []zapcore.Fie return k.Encoder.EncodeEntry(entry, fields) } + diff --git a/pkg/log/zap/zap.go b/pkg/log/zap/zap.go new file mode 100644 index 0000000000..e58c5149c6 --- /dev/null +++ b/pkg/log/zap/zap.go @@ -0,0 +1,68 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package zap contains helpers for setting up a new logr.Logger instance +// using the Zap logging framework. +package zap + +import ( + "io" + "os" + "time" + + "github.com/go-logr/logr" + "github.com/go-logr/zapr" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" +) + +// Logger is a Logger implementation. +// If development is true, a Zap development config will be used +// (stacktraces on warnings, no sampling), otherwise a Zap production +// config will be used (stacktraces on errors, sampling). +func Logger(development bool) logr.Logger { + return LoggerTo(os.Stderr, development) +} + +// LoggerTo returns a new Logger implementation using Zap which logs +// to the given destination, instead of stderr. It otherwise behaves like +// ZapLogger. +func LoggerTo(destWriter io.Writer, development bool) logr.Logger { + // this basically mimics NewConfig, but with a custom sink + sink := zapcore.AddSync(destWriter) + + var enc zapcore.Encoder + var lvl zap.AtomicLevel + var opts []zap.Option + if development { + encCfg := zap.NewDevelopmentEncoderConfig() + enc = zapcore.NewConsoleEncoder(encCfg) + lvl = zap.NewAtomicLevelAt(zap.DebugLevel) + opts = append(opts, zap.Development(), zap.AddStacktrace(zap.ErrorLevel)) + } else { + encCfg := zap.NewProductionEncoderConfig() + enc = zapcore.NewJSONEncoder(encCfg) + lvl = zap.NewAtomicLevelAt(zap.InfoLevel) + opts = append(opts, zap.AddStacktrace(zap.WarnLevel), + zap.WrapCore(func(core zapcore.Core) zapcore.Core { + return zapcore.NewSampler(core, time.Second, 100, 100) + })) + } + opts = append(opts, zap.AddCallerSkip(1), zap.ErrorOutput(sink)) + log := zap.New(zapcore.NewCore(&KubeAwareEncoder{Encoder: enc, Verbose: development}, sink, lvl)) + log = log.WithOptions(opts...) + return zapr.NewLogger(log) +} diff --git a/pkg/log/zap/zap_suite_test.go b/pkg/log/zap/zap_suite_test.go new file mode 100644 index 0000000000..711ea0ae17 --- /dev/null +++ b/pkg/log/zap/zap_suite_test.go @@ -0,0 +1,30 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package zap + +import ( + "testing" + + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + "sigs.k8s.io/controller-runtime/pkg/envtest/printer" +) + +func TestSource(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecsWithDefaultAndCustomReporters(t, "Zap Log Suite", []Reporter{printer.NewlineReporter{}}) +} diff --git a/pkg/log/zap/zap_test.go b/pkg/log/zap/zap_test.go new file mode 100644 index 0000000000..8cbd8818d5 --- /dev/null +++ b/pkg/log/zap/zap_test.go @@ -0,0 +1,231 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package zap + +import ( + "bytes" + "encoding/json" + "io/ioutil" + + "github.com/go-logr/logr" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + kapi "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/types" +) + +// testStringer is a fmt.Stringer +type testStringer struct{} + +func (testStringer) String() string { + return "value" +} + +// fakeSyncWriter is a fake zap.SyncerWriter that lets us test if sync was called +type fakeSyncWriter bool + +func (w *fakeSyncWriter) Write(p []byte) (int, error) { + return len(p), nil +} +func (w *fakeSyncWriter) Sync() error { + *w = true + return nil +} + +// logInfo is the information for a particular fakeLogger message +type logInfo struct { + name []string + tags []interface{} + msg string +} + +// fakeLoggerRoot is the root object to which all fakeLoggers record their messages. +type fakeLoggerRoot struct { + messages []logInfo +} + +// fakeLogger is a fake implementation of logr.Logger that records +// messages, tags, and names, +// just records the name. +type fakeLogger struct { + name []string + tags []interface{} + + root *fakeLoggerRoot +} + +func (f *fakeLogger) WithName(name string) logr.Logger { + names := append([]string(nil), f.name...) + names = append(names, name) + return &fakeLogger{ + name: names, + tags: f.tags, + root: f.root, + } +} + +func (f *fakeLogger) WithValues(vals ...interface{}) logr.Logger { + tags := append([]interface{}(nil), f.tags...) + tags = append(tags, vals...) + return &fakeLogger{ + name: f.name, + tags: tags, + root: f.root, + } +} + +func (f *fakeLogger) Error(err error, msg string, vals ...interface{}) { + tags := append([]interface{}(nil), f.tags...) + tags = append(tags, "error", err) + tags = append(tags, vals...) + f.root.messages = append(f.root.messages, logInfo{ + name: append([]string(nil), f.name...), + tags: tags, + msg: msg, + }) +} + +func (f *fakeLogger) Info(msg string, vals ...interface{}) { + tags := append([]interface{}(nil), f.tags...) + tags = append(tags, vals...) + f.root.messages = append(f.root.messages, logInfo{ + name: append([]string(nil), f.name...), + tags: tags, + msg: msg, + }) +} + +func (f *fakeLogger) Enabled() bool { return true } +func (f *fakeLogger) V(lvl int) logr.InfoLogger { return f } + +var _ = Describe("Zap logger setup", func() { + Context("with the default output", func() { + It("shouldn't fail when setting up production", func() { + Expect(Logger(false)).NotTo(BeNil()) + }) + + It("shouldn't fail when setting up development", func() { + Expect(Logger(true)).NotTo(BeNil()) + }) + }) + + Context("with custom non-sync output", func() { + It("shouldn't fail when setting up production", func() { + Expect(LoggerTo(ioutil.Discard, false)).NotTo(BeNil()) + }) + + It("shouldn't fail when setting up development", func() { + Expect(LoggerTo(ioutil.Discard, true)).NotTo(BeNil()) + }) + }) + + Context("when logging kubernetes objects", func() { + var logOut *bytes.Buffer + var logger logr.Logger + + BeforeEach(func() { + logOut = new(bytes.Buffer) + By("setting up the logger") + // use production settings (false) to get just json output + logger = LoggerTo(logOut, false) + }) + + It("should log a standard namespaced Kubernetes object name and namespace", func() { + pod := &kapi.Pod{} + pod.Name = "some-pod" + pod.Namespace = "some-ns" + logger.Info("here's a kubernetes object", "thing", pod) + + outRaw := logOut.Bytes() + res := map[string]interface{}{} + Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) + + Expect(res).To(HaveKeyWithValue("thing", map[string]interface{}{ + "name": pod.Name, + "namespace": pod.Namespace, + })) + }) + + It("should work fine with normal stringers", func() { + logger.Info("here's a non-kubernetes stringer", "thing", testStringer{}) + outRaw := logOut.Bytes() + res := map[string]interface{}{} + Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) + + Expect(res).To(HaveKeyWithValue("thing", "value")) + }) + + It("should log a standard non-namespaced Kubernetes object name", func() { + node := &kapi.Node{} + node.Name = "some-node" + logger.Info("here's a kubernetes object", "thing", node) + + outRaw := logOut.Bytes() + res := map[string]interface{}{} + Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) + + Expect(res).To(HaveKeyWithValue("thing", map[string]interface{}{ + "name": node.Name, + })) + }) + + It("should log a standard Kubernetes object's kind, if set", func() { + node := &kapi.Node{} + node.Name = "some-node" + node.APIVersion = "v1" + node.Kind = "Node" + logger.Info("here's a kubernetes object", "thing", node) + + outRaw := logOut.Bytes() + res := map[string]interface{}{} + Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) + + Expect(res).To(HaveKeyWithValue("thing", map[string]interface{}{ + "name": node.Name, + "apiVersion": "v1", + "kind": "Node", + })) + }) + + It("should log a standard non-namespaced NamespacedName name", func() { + name := types.NamespacedName{Name: "some-node"} + logger.Info("here's a kubernetes object", "thing", name) + + outRaw := logOut.Bytes() + res := map[string]interface{}{} + Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) + + Expect(res).To(HaveKeyWithValue("thing", map[string]interface{}{ + "name": name.Name, + })) + }) + + It("should log a standard namespaced NamespacedName name and namespace", func() { + name := types.NamespacedName{Name: "some-pod", Namespace: "some-ns"} + logger.Info("here's a kubernetes object", "thing", name) + + outRaw := logOut.Bytes() + res := map[string]interface{}{} + Expect(json.Unmarshal(outRaw, &res)).To(Succeed()) + + Expect(res).To(HaveKeyWithValue("thing", map[string]interface{}{ + "name": name.Name, + "namespace": name.Namespace, + })) + }) + }) +}) diff --git a/pkg/manager/example_test.go b/pkg/manager/example_test.go index 76d585a18d..f718b38f8e 100644 --- a/pkg/manager/example_test.go +++ b/pkg/manager/example_test.go @@ -21,7 +21,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client/config" "sigs.k8s.io/controller-runtime/pkg/manager" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/runtime/signals" ) diff --git a/pkg/manager/internal.go b/pkg/manager/internal.go index fd04e8fb54..f828b2f284 100644 --- a/pkg/manager/internal.go +++ b/pkg/manager/internal.go @@ -36,11 +36,11 @@ import ( "sigs.k8s.io/controller-runtime/pkg/metrics" "sigs.k8s.io/controller-runtime/pkg/recorder" "sigs.k8s.io/controller-runtime/pkg/runtime/inject" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" "sigs.k8s.io/controller-runtime/pkg/webhook/admission/types" ) -var log = logf.KBLog.WithName("manager") +var log = logf.RuntimeLog.WithName("manager") type controllerManager struct { // config is the rest.config used to talk to the apiserver. Required. diff --git a/pkg/manager/manager_suite_test.go b/pkg/manager/manager_suite_test.go index b8d8b33f06..a1183f66c0 100644 --- a/pkg/manager/manager_suite_test.go +++ b/pkg/manager/manager_suite_test.go @@ -25,7 +25,8 @@ import ( "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/envtest" "sigs.k8s.io/controller-runtime/pkg/metrics" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -38,7 +39,7 @@ var cfg *rest.Config var clientset *kubernetes.Clientset var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) testenv = &envtest.Environment{} diff --git a/pkg/predicate/predicate.go b/pkg/predicate/predicate.go index 99a4f9d93a..9542d4a1c0 100644 --- a/pkg/predicate/predicate.go +++ b/pkg/predicate/predicate.go @@ -18,10 +18,10 @@ package predicate import ( "sigs.k8s.io/controller-runtime/pkg/event" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" ) -var log = logf.KBLog.WithName("predicate").WithName("eventFilters") +var log = logf.RuntimeLog.WithName("predicate").WithName("eventFilters") // Predicate filters events before enqueuing the keys. type Predicate interface { diff --git a/pkg/predicate/predicate_suite_test.go b/pkg/predicate/predicate_suite_test.go index fc8713e40e..15ee76ffef 100644 --- a/pkg/predicate/predicate_suite_test.go +++ b/pkg/predicate/predicate_suite_test.go @@ -22,7 +22,8 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestPredicate(t *testing.T) { @@ -31,5 +32,5 @@ func TestPredicate(t *testing.T) { } var _ = BeforeSuite(func() { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) }) diff --git a/pkg/reconcile/reconcile_suite_test.go b/pkg/reconcile/reconcile_suite_test.go index 7c88fb6ab6..f9fbba4b32 100644 --- a/pkg/reconcile/reconcile_suite_test.go +++ b/pkg/reconcile/reconcile_suite_test.go @@ -22,7 +22,8 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestReconcile(t *testing.T) { @@ -31,5 +32,5 @@ func TestReconcile(t *testing.T) { } var _ = BeforeSuite(func() { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) }) diff --git a/pkg/runtime/log/log.go b/pkg/runtime/log/log.go index 4a50601005..4ad91f456f 100644 --- a/pkg/runtime/log/log.go +++ b/pkg/runtime/log/log.go @@ -16,70 +16,42 @@ limitations under the License. // Package log contains utilities for fetching a new logger // when one is not already available. +// Deprecated: use pkg/log package log import ( - "io" - "os" - "time" - "github.com/go-logr/logr" - "github.com/go-logr/zapr" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" -) - -// ZapLogger is a Logger implementation. -// If development is true, a Zap development config will be used -// (stacktraces on warnings, no sampling), otherwise a Zap production -// config will be used (stacktraces on errors, sampling). -func ZapLogger(development bool) logr.Logger { - return ZapLoggerTo(os.Stderr, development) -} - -// ZapLoggerTo returns a new Logger implementation using Zap which logs -// to the given destination, instead of stderr. It otherise behaves like -// ZapLogger. -func ZapLoggerTo(destWriter io.Writer, development bool) logr.Logger { - // this basically mimics NewConfig, but with a custom sink - sink := zapcore.AddSync(destWriter) - var enc zapcore.Encoder - var lvl zap.AtomicLevel - var opts []zap.Option - if development { - encCfg := zap.NewDevelopmentEncoderConfig() - enc = zapcore.NewConsoleEncoder(encCfg) - lvl = zap.NewAtomicLevelAt(zap.DebugLevel) - opts = append(opts, zap.Development(), zap.AddStacktrace(zap.ErrorLevel)) - } else { - encCfg := zap.NewProductionEncoderConfig() - enc = zapcore.NewJSONEncoder(encCfg) - lvl = zap.NewAtomicLevelAt(zap.InfoLevel) - opts = append(opts, zap.AddStacktrace(zap.WarnLevel), - zap.WrapCore(func(core zapcore.Core) zapcore.Core { - return zapcore.NewSampler(core, time.Second, 100, 100) - })) - } - opts = append(opts, zap.AddCallerSkip(1), zap.ErrorOutput(sink)) - log := zap.New(zapcore.NewCore(&KubeAwareEncoder{Encoder: enc, Verbose: development}, sink, lvl)) - log = log.WithOptions(opts...) - return zapr.NewLogger(log) -} - -// SetLogger sets a concrete logging implementation for all deferred Loggers. -func SetLogger(l logr.Logger) { - Log.Fulfill(l) -} - -// Log is the base logger used by kubebuilder. It delegates -// to another logr.Logger. You *must* call SetLogger to -// get any actual logging. -var Log = NewDelegatingLogger(NullLogger{}) + "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" +) -// KBLog is a base parent logger. -var KBLog logr.Logger +var ( + // ZapLogger is a Logger implementation. + // If development is true, a Zap development config will be used + // (stacktraces on warnings, no sampling), otherwise a Zap production + // config will be used (stacktraces on errors, sampling). + ZapLogger = zap.Logger + + // ZapLoggerTo returns a new Logger implementation using Zap which logs + // to the given destination, instead of stderr. It otherise behaves like + // ZapLogger. + ZapLoggerTo = zap.Logger + + // SetLogger sets a concrete logging implementation for all deferred Loggers. + SetLogger = log.SetLogger + + // Log is the base logger used by kubebuilder. It delegates + // to another logr.Logger. You *must* call SetLogger to + // get any actual logging. + Log = log.Log + + // KBLog is a base parent logger for use inside controller-runtime. + // Deprecated: don't use this outside controller-runtime + // (inside CR, use pkg/internal/log.RuntimeLog) + KBLog logr.Logger +) func init() { - KBLog = Log.WithName("kubebuilder") + KBLog = log.Log.WithName("controller-runtime") } diff --git a/pkg/source/internal/eventsource.go b/pkg/source/internal/eventsource.go index 6ced9f4eff..ae220fc882 100644 --- a/pkg/source/internal/eventsource.go +++ b/pkg/source/internal/eventsource.go @@ -25,13 +25,13 @@ import ( "k8s.io/client-go/util/workqueue" "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/handler" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/predicate" ) -var log = logf.KBLog.WithName("source").WithName("EventHandler") +var log = logf.RuntimeLog.WithName("source").WithName("EventHandler") var _ cache.ResourceEventHandler = EventHandler{} diff --git a/pkg/source/internal/internal_suite_test.go b/pkg/source/internal/internal_suite_test.go index 866df19cd2..53848f2db7 100644 --- a/pkg/source/internal/internal_suite_test.go +++ b/pkg/source/internal/internal_suite_test.go @@ -22,7 +22,8 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestInternal(t *testing.T) { @@ -31,5 +32,5 @@ func TestInternal(t *testing.T) { } var _ = BeforeSuite(func() { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) }) diff --git a/pkg/source/source.go b/pkg/source/source.go index cd7bef798f..3375616e1d 100644 --- a/pkg/source/source.go +++ b/pkg/source/source.go @@ -26,7 +26,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/event" "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/runtime/inject" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" "sigs.k8s.io/controller-runtime/pkg/source/internal" toolscache "k8s.io/client-go/tools/cache" @@ -34,7 +34,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/predicate" ) -var log = logf.KBLog.WithName("source") +var log = logf.RuntimeLog.WithName("source") const ( // defaultBufferSize is the default number of event notifications that can be buffered. diff --git a/pkg/source/source_suite_test.go b/pkg/source/source_suite_test.go index ccd6697ba0..0a45a0e1b1 100644 --- a/pkg/source/source_suite_test.go +++ b/pkg/source/source_suite_test.go @@ -25,7 +25,8 @@ import ( "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -41,7 +42,7 @@ var stop chan struct{} var _ = BeforeSuite(func(done Done) { stop = make(chan struct{}) - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) testenv = &envtest.Environment{} diff --git a/pkg/webhook/admission/admission_suite_test.go b/pkg/webhook/admission/admission_suite_test.go index 6d34d165a4..42323177e6 100644 --- a/pkg/webhook/admission/admission_suite_test.go +++ b/pkg/webhook/admission/admission_suite_test.go @@ -23,7 +23,8 @@ import ( . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestAdmissionWebhook(t *testing.T) { @@ -32,7 +33,7 @@ func TestAdmissionWebhook(t *testing.T) { } var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) close(done) }, 60) diff --git a/pkg/webhook/admission/doc.go b/pkg/webhook/admission/doc.go index 44a2b15294..0126aad03a 100644 --- a/pkg/webhook/admission/doc.go +++ b/pkg/webhook/admission/doc.go @@ -95,7 +95,7 @@ The following snippet is an example implementation of validating handler. package admission import ( - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" ) -var log = logf.KBLog.WithName("admission") +var log = logf.RuntimeLog.WithName("admission") diff --git a/pkg/webhook/doc.go b/pkg/webhook/doc.go index 2c9eba2a3d..930df1e436 100644 --- a/pkg/webhook/doc.go +++ b/pkg/webhook/doc.go @@ -88,7 +88,7 @@ Start the server by starting the manager package webhook import ( - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" ) -var log = logf.KBLog.WithName("webhook") +var log = logf.RuntimeLog.WithName("webhook") diff --git a/pkg/webhook/internal/cert/generator/suite_test.go b/pkg/webhook/internal/cert/generator/suite_test.go index 89af8a8562..1b232a6525 100644 --- a/pkg/webhook/internal/cert/generator/suite_test.go +++ b/pkg/webhook/internal/cert/generator/suite_test.go @@ -23,7 +23,8 @@ import ( . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -32,6 +33,6 @@ func TestSource(t *testing.T) { } var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) close(done) }, 60) diff --git a/pkg/webhook/internal/cert/suite_test.go b/pkg/webhook/internal/cert/suite_test.go index 98064687ab..6762ada6a5 100644 --- a/pkg/webhook/internal/cert/suite_test.go +++ b/pkg/webhook/internal/cert/suite_test.go @@ -23,7 +23,8 @@ import ( . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -32,6 +33,6 @@ func TestSource(t *testing.T) { } var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) close(done) }, 60) diff --git a/pkg/webhook/internal/cert/writer/doc.go b/pkg/webhook/internal/cert/writer/doc.go index 91aa07ae4a..425626606c 100644 --- a/pkg/webhook/internal/cert/writer/doc.go +++ b/pkg/webhook/internal/cert/writer/doc.go @@ -58,7 +58,7 @@ Inject necessary information given the objects. package writer import ( - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/internal/log" ) -var log = logf.KBLog.WithName("admission").WithName("cert").WithName("writer") +var log = logf.RuntimeLog.WithName("admission").WithName("cert").WithName("writer") diff --git a/pkg/webhook/internal/cert/writer/suite_test.go b/pkg/webhook/internal/cert/writer/suite_test.go index 67b96bca82..968ca8b67a 100644 --- a/pkg/webhook/internal/cert/writer/suite_test.go +++ b/pkg/webhook/internal/cert/writer/suite_test.go @@ -23,7 +23,8 @@ import ( . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/envtest" - logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" ) func TestSource(t *testing.T) { @@ -32,6 +33,6 @@ func TestSource(t *testing.T) { } var _ = BeforeSuite(func(done Done) { - logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true)) + logf.SetLogger(zap.LoggerTo(GinkgoWriter, true)) close(done) }, 60)