evcc-io/util/log_context.go

29 lines
485 B
Go

package util
import (
"context"
)
var CtxLogger = struct{}{}
func WithLogger(ctx context.Context, log *Logger) context.Context {
return context.WithValue(ctx, CtxLogger, log)
}
func ContextLogger(ctx context.Context) *Logger {
if ctx != nil {
if l, ok := ctx.Value(CtxLogger).(*Logger); ok {
return l
}
}
return nil
}
func ContextLoggerWithDefault(ctx context.Context, log *Logger) *Logger {
if log := ContextLogger(ctx); log != nil {
return log
}
return log
}