package logging import ( "context" "github.com/go-logr/logr" ) // FromContext returns a logger with predefined values from a context.Context. // If one doesn't exist, a default logger is instantiated and returned. func FromContext(ctx context.Context, keysAndValues ...interface{}) logr.Logger { var log *logr.Logger if ctx != nil { if logger, err := logr.FromContext(ctx); err == nil { log = &logger } } if log == nil { log = &NewLogger().Logger } return log.WithValues(keysAndValues...) } // IntoContext takes a context and sets the logger as one of its values. // Use the FromContext function to retrieve the logger. func IntoContext(ctx context.Context, log logr.Logger) context.Context { return logr.NewContext(ctx, log) }