grpc/logger/context.go

47 lines
679 B
Go
Raw Normal View History

package logger
import (
"context"
"sync"
"github.com/sirupsen/logrus"
)
var (
defaultLogger Logger
mu sync.RWMutex
)
type log struct{}
func init() {
2021-11-18 19:21:30 +00:00
defaultLogger = &logger{fl: logrus.New()}
}
2021-11-28 08:33:32 +00:00
var C = From
func SetDefault(logger Logger) {
mu.Lock()
defer mu.Unlock()
defaultLogger = logger
}
func Set(ctx context.Context, logger Logger) context.Context {
return context.WithValue(ctx, log{}, logger)
}
func From(ctx context.Context) Logger {
log, ok := ctx.Value(log{}).(Logger)
if ok {
return log
}
if defaultLogger != nil {
return defaultLogger
}
logr := New()
mu.Lock()
defer mu.Unlock()
defaultLogger = logr
return defaultLogger
}