File tree Expand file tree Collapse file tree 2 files changed +30
-0
lines changed
Expand file tree Collapse file tree 2 files changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -125,6 +125,11 @@ var (
125125 // get any actual logging.
126126 Log = log .Log
127127
128+ // LoggerFromContext returns a logger with predefined values from a context.Context.
129+ //
130+ // This is meant to be used with the context supplied in a struct that satisfies the Reconciler interface.
131+ LoggerFromContext = log .FromContext
132+
128133 // SetLogger sets a concrete logging implementation for all deferred Loggers.
129134 SetLogger = log .SetLogger
130135)
Original file line number Diff line number Diff line change @@ -34,9 +34,15 @@ limitations under the License.
3434package log
3535
3636import (
37+ "context"
38+
3739 "github.com/go-logr/logr"
3840)
3941
42+ var (
43+ contextKey = & struct {}{}
44+ )
45+
4046// SetLogger sets a concrete logging implementation for all deferred Loggers.
4147func SetLogger (l logr.Logger ) {
4248 Log .Fulfill (l )
@@ -46,3 +52,22 @@ func SetLogger(l logr.Logger) {
4652// to another logr.Logger. You *must* call SetLogger to
4753// get any actual logging.
4854var Log = NewDelegatingLogger (NullLogger {})
55+
56+ // FromContext returns a logger with predefined values from a context.Context.
57+ func FromContext (ctx context.Context , keysAndValues ... interface {}) logr.Logger {
58+ var log logr.Logger
59+ if ctx == nil {
60+ log = Log
61+ } else {
62+ lv := ctx .Value (contextKey )
63+ log = lv .(logr.Logger )
64+ }
65+ log .WithValues (keysAndValues ... )
66+ return log
67+ }
68+
69+ // IntoContext takes a context and sets the logger as one of its keys.
70+ // Use FromContext function to retrieve the logger.
71+ func IntoContext (ctx context.Context , log logr.Logger ) context.Context {
72+ return context .WithValue (ctx , contextKey , log )
73+ }
You can’t perform that action at this time.
0 commit comments