Sha256: 18a959e6d6b3dee94010483466e68583105788b340df608c4e7dd5dd7049e803

Contents?: true

Size: 1.48 KB

Versions: 16

Compression:

Stored size: 1.48 KB

Contents

package middleware

import (
	"context"

	"github.com/aws/smithy-go/logging"
)

// loggerKey is the context value key for which the logger is associated with.
type loggerKey struct{}

// GetLogger takes a context to retrieve a Logger from. If no logger is present on the context a logging.Nop logger
// is returned. If the logger retrieved from context supports the ContextLogger interface, the context will be passed
// to the WithContext method and the resulting logger will be returned. Otherwise the stored logger is returned as is.
func GetLogger(ctx context.Context) logging.Logger {
	logger, ok := ctx.Value(loggerKey{}).(logging.Logger)
	if !ok || logger == nil {
		return logging.Nop{}
	}

	return logging.WithContext(ctx, logger)
}

// SetLogger sets the provided logger value on the provided ctx.
func SetLogger(ctx context.Context, logger logging.Logger) context.Context {
	return context.WithValue(ctx, loggerKey{}, logger)
}

type setLogger struct {
	Logger logging.Logger
}

// AddSetLoggerMiddleware adds a middleware that will add the provided logger to the middleware context.
func AddSetLoggerMiddleware(stack *Stack, logger logging.Logger) error {
	return stack.Initialize.Add(&setLogger{Logger: logger}, After)
}

func (a *setLogger) ID() string {
	return "SetLogger"
}

func (a *setLogger) HandleInitialize(ctx context.Context, in InitializeInput, next InitializeHandler) (
	out InitializeOutput, metadata Metadata, err error,
) {
	return next.HandleInitialize(SetLogger(ctx, a.Logger), in)
}

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
ruby_snowflake_client-1.3.7 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.3.6 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.3.5 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.3.4 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.3.4.pre.debug ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.3.3.pre.debug ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.3.2 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.3.1 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.3.0 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.2.1 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.2.0 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.1.1 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.1.0 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.0.2 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.0.1 ext/vendor/github.com/aws/smithy-go/middleware/logging.go
ruby_snowflake_client-1.0.0 ext/vendor/github.com/aws/smithy-go/middleware/logging.go