mirror of https://github.com/milvus-io/milvus.git
38 lines
698 B
Go
38 lines
698 B
Go
package log
|
|
|
|
import "go.uber.org/atomic"
|
|
|
|
var (
|
|
_ WithLogger = &Binder{}
|
|
_ LoggerBinder = &Binder{}
|
|
)
|
|
|
|
// WithLogger is an interface to help access local logger.
|
|
type WithLogger interface {
|
|
Logger() *MLogger
|
|
}
|
|
|
|
// LoggerBinder is an interface to help set logger.
|
|
type LoggerBinder interface {
|
|
SetLogger(logger *MLogger)
|
|
}
|
|
|
|
// Binder is a embedding type to help access local logger.
|
|
type Binder struct {
|
|
logger atomic.Pointer[MLogger]
|
|
}
|
|
|
|
// SetLogger sets logger to Binder.
|
|
func (w *Binder) SetLogger(logger *MLogger) {
|
|
w.logger.Store(logger)
|
|
}
|
|
|
|
// Logger returns the logger of Binder.
|
|
func (w *Binder) Logger() *MLogger {
|
|
l := w.logger.Load()
|
|
if l == nil {
|
|
return With()
|
|
}
|
|
return l
|
|
}
|