Skip to content

Commit 19b9f17

Browse files
committed
Add helper to log to a particular writer
This adds a helper (ZapLoggerTo) to log to a particular io.Writer. This allows us to set our suite logging to `GinkgoWriter`, so that ginkgo captures the logging output correctly.
1 parent c5e5439 commit 19b9f17

File tree

16 files changed

+55
-16
lines changed

16 files changed

+55
-16
lines changed

pkg/admission/cert/writer/suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ func TestSource(t *testing.T) {
3232
}
3333

3434
var _ = BeforeSuite(func(done Done) {
35-
logf.SetLogger(logf.ZapLogger(false))
35+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
3636
close(done)
3737
}, 60)

pkg/builder/builder_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var testenv *envtest.Environment
1919
var cfg *rest.Config
2020

2121
var _ = BeforeSuite(func(done Done) {
22-
logf.SetLogger(logf.ZapLogger(false))
22+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
2323

2424
testenv = &envtest.Environment{}
2525

pkg/cache/cache_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var cfg *rest.Config
3737
var clientset *kubernetes.Clientset
3838

3939
var _ = BeforeSuite(func(done Done) {
40-
logf.SetLogger(logf.ZapLogger(false))
40+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
4141

4242
testenv = &envtest.Environment{}
4343

pkg/client/client_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ var cfg *rest.Config
3838
var clientset *kubernetes.Clientset
3939

4040
var _ = BeforeSuite(func(done Done) {
41-
logf.SetLogger(logf.ZapLogger(false))
41+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
4242

4343
testenv = &envtest.Environment{}
4444

pkg/client/fake/client_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ func TestSource(t *testing.T) {
3232
}
3333

3434
var _ = BeforeSuite(func(done Done) {
35-
logf.SetLogger(logf.ZapLogger(false))
35+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
3636
close(done)
3737
}, 60)

pkg/controller/controller_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var cfg *rest.Config
3737
var clientset *kubernetes.Clientset
3838

3939
var _ = BeforeSuite(func(done Done) {
40-
logf.SetLogger(logf.ZapLogger(false))
40+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
4141

4242
testenv = &envtest.Environment{}
4343

pkg/envtest/envtest_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func TestSource(t *testing.T) {
3232
var env *Environment
3333

3434
var _ = BeforeSuite(func(done Done) {
35-
logf.SetLogger(logf.ZapLogger(false))
35+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
3636
env = &Environment{}
3737
_, err := env.Start()
3838
Expect(err).NotTo(HaveOccurred())

pkg/handler/eventhandler_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ func TestEventhandler(t *testing.T) {
3131
}
3232

3333
var _ = BeforeSuite(func() {
34-
logf.SetLogger(logf.ZapLogger(false))
34+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
3535
})

pkg/internal/controller/controller_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var cfg *rest.Config
3737
var clientset *kubernetes.Clientset
3838

3939
var _ = BeforeSuite(func(done Done) {
40-
logf.SetLogger(logf.ZapLogger(false))
40+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
4141

4242
testenv = &envtest.Environment{}
4343

pkg/internal/recorder/recorder_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var cfg *rest.Config
3737
var clientset *kubernetes.Clientset
3838

3939
var _ = BeforeSuite(func(done Done) {
40-
logf.SetLogger(logf.ZapLogger(false))
40+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
4141

4242
testenv = &envtest.Environment{}
4343

pkg/manager/manager_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var cfg *rest.Config
3737
var clientset *kubernetes.Clientset
3838

3939
var _ = BeforeSuite(func(done Done) {
40-
logf.SetLogger(logf.ZapLogger(false))
40+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
4141

4242
testenv = &envtest.Environment{}
4343

pkg/predicate/predicate_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ func TestPredicate(t *testing.T) {
3131
}
3232

3333
var _ = BeforeSuite(func() {
34-
logf.SetLogger(logf.ZapLogger(false))
34+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
3535
})

pkg/reconcile/reconcile_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ func TestReconcile(t *testing.T) {
3131
}
3232

3333
var _ = BeforeSuite(func() {
34-
logf.SetLogger(logf.ZapLogger(false))
34+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
3535
})

pkg/runtime/log/log.go

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,20 @@
33
package log
44

55
import (
6+
"io"
67
"log"
8+
"time"
79

810
"github.com/go-logr/logr"
911
"github.com/go-logr/zapr"
1012
"go.uber.org/zap"
13+
"go.uber.org/zap/zapcore"
1114
)
1215

1316
// ZapLogger is a Logger implementation.
14-
// if development is true stack traces will be printed for errors
17+
// If development is true, a Zap development config will be used
18+
// (stacktraces on warnings, no sampling), otherwise a Zap production
19+
// config will be used (stacktraces on errors, sampling).
1520
func ZapLogger(development bool) logr.Logger {
1621
var zapLog *zap.Logger
1722
var err error
@@ -27,6 +32,40 @@ func ZapLogger(development bool) logr.Logger {
2732
return zapr.NewLogger(zapLog)
2833
}
2934

35+
// ZapLoggerTo returns a new Logger implementation using Zap which logs
36+
// to the given destination, instead of stderr. It otherise behaves like
37+
// ZapLogger.
38+
func ZapLoggerTo(destWriter io.Writer, development bool) logr.Logger {
39+
// this basically mimics New<type>Config, but with a custom sink
40+
var sink zapcore.WriteSyncer
41+
if asSyncer, isSyncer := destWriter.(zapcore.WriteSyncer); isSyncer {
42+
sink = asSyncer
43+
} else {
44+
sink = zapcore.AddSync(destWriter)
45+
}
46+
var enc zapcore.Encoder
47+
var lvl zap.AtomicLevel
48+
var opts []zap.Option
49+
if development {
50+
encCfg := zap.NewDevelopmentEncoderConfig()
51+
enc = zapcore.NewConsoleEncoder(encCfg)
52+
lvl = zap.NewAtomicLevelAt(zap.DebugLevel)
53+
opts = append(opts, zap.Development(), zap.AddStacktrace(zap.ErrorLevel))
54+
} else {
55+
encCfg := zap.NewProductionEncoderConfig()
56+
enc = zapcore.NewJSONEncoder(encCfg)
57+
lvl = zap.NewAtomicLevelAt(zap.InfoLevel)
58+
opts = append(opts, zap.AddStacktrace(zap.WarnLevel),
59+
zap.WrapCore(func(core zapcore.Core) zapcore.Core {
60+
return zapcore.NewSampler(core, time.Second, 100, 100)
61+
}))
62+
}
63+
opts = append(opts, zap.AddCallerSkip(1), zap.ErrorOutput(sink))
64+
log := zap.New(zapcore.NewCore(enc, sink, lvl))
65+
log = log.WithOptions(opts...)
66+
return zapr.NewLogger(log)
67+
}
68+
3069
func fatalIfErr(err error, f func(format string, v ...interface{})) {
3170
if err != nil {
3271
f("unable to construct the logger: %v", err)

pkg/source/internal/internal_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ func TestInternal(t *testing.T) {
3131
}
3232

3333
var _ = BeforeSuite(func() {
34-
logf.SetLogger(logf.ZapLogger(true))
34+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
3535
})

pkg/source/source_suite_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ var stop chan struct{}
4141

4242
var _ = BeforeSuite(func(done Done) {
4343
stop = make(chan struct{})
44-
logf.SetLogger(logf.ZapLogger(true))
44+
logf.SetLogger(logf.ZapLoggerTo(GinkgoWriter, true))
4545

4646
testenv = &envtest.Environment{}
4747

0 commit comments

Comments
 (0)