lure/pkg/loggerctx/log.go

30 lines
669 B
Go
Raw Normal View History

2023-10-06 21:21:12 +00:00
package loggerctx
import (
"context"
"go.elara.ws/logger"
)
2023-10-06 21:23:29 +00:00
// loggerCtxKey is used as the context key for loggers
2023-10-06 21:21:12 +00:00
type loggerCtxKey struct{}
2023-10-06 21:23:29 +00:00
// With returns a copy of ctx containing log
2023-10-06 21:21:12 +00:00
func With(ctx context.Context, log logger.Logger) context.Context {
return context.WithValue(ctx, loggerCtxKey{}, log)
}
2023-10-06 21:23:29 +00:00
// From attempts to get a logger from ctx. If ctx doesn't
// contain a logger, it returns a nop logger.
2023-10-06 21:21:12 +00:00
func From(ctx context.Context) logger.Logger {
if val := ctx.Value(loggerCtxKey{}); val != nil {
if log, ok := val.(logger.Logger); ok && log != nil {
return log
} else {
return logger.NewNop()
}
} else {
return logger.NewNop()
}
}