mirror of
https://gitea.plemya-x.ru/Plemya-x/ALR.git
synced 2025-01-10 17:26:45 +00:00
30 lines
669 B
Go
30 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()
|
||
|
}
|
||
|
}
|