mirror of
https://gitea.plemya-x.ru/Plemya-x/ALR.git
synced 2025-01-10 17:26:45 +00:00
29 lines
669 B
Go
29 lines
669 B
Go
package loggerctx
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.elara.ws/logger"
|
|
)
|
|
|
|
// loggerCtxKey is used as the context key for loggers
|
|
type loggerCtxKey struct{}
|
|
|
|
// With returns a copy of ctx containing log
|
|
func With(ctx context.Context, log logger.Logger) context.Context {
|
|
return context.WithValue(ctx, loggerCtxKey{}, log)
|
|
}
|
|
|
|
// From attempts to get a logger from ctx. If ctx doesn't
|
|
// contain a logger, it returns a nop logger.
|
|
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()
|
|
}
|
|
}
|