100 lines
2.1 KiB
Go
100 lines
2.1 KiB
Go
package grpc_logsettable
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"sync"
|
|
|
|
"google.golang.org/grpc/grpclog"
|
|
)
|
|
|
|
// SettableLoggerV2 is thread-safe.
|
|
type SettableLoggerV2 interface {
|
|
grpclog.LoggerV2
|
|
// Sets given logger as the underlying implementation.
|
|
Set(loggerv2 grpclog.LoggerV2)
|
|
// Sets `discard` logger as the underlying implementation.
|
|
Reset()
|
|
}
|
|
|
|
// ReplaceGrpcLoggerV2 creates and configures SettableLoggerV2 as grpc logger.
|
|
func ReplaceGrpcLoggerV2() SettableLoggerV2 {
|
|
settable := &settableLoggerV2{}
|
|
settable.Reset()
|
|
grpclog.SetLoggerV2(settable)
|
|
return settable
|
|
}
|
|
|
|
// SettableLoggerV2 implements SettableLoggerV2
|
|
type settableLoggerV2 struct {
|
|
log grpclog.LoggerV2
|
|
mu sync.RWMutex
|
|
}
|
|
|
|
func (s *settableLoggerV2) Set(log grpclog.LoggerV2) {
|
|
s.mu.Lock()
|
|
defer s.mu.Unlock()
|
|
s.log = log
|
|
}
|
|
|
|
func (s *settableLoggerV2) Reset() {
|
|
s.Set(grpclog.NewLoggerV2(ioutil.Discard, ioutil.Discard, ioutil.Discard))
|
|
}
|
|
|
|
func (s *settableLoggerV2) get() grpclog.LoggerV2 {
|
|
s.mu.RLock()
|
|
defer s.mu.RUnlock()
|
|
return s.log
|
|
}
|
|
|
|
func (s *settableLoggerV2) Info(args ...interface{}) {
|
|
s.get().Info(args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Infoln(args ...interface{}) {
|
|
s.get().Infoln(args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Infof(format string, args ...interface{}) {
|
|
s.get().Infof(format, args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Warning(args ...interface{}) {
|
|
s.get().Warning(args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Warningln(args ...interface{}) {
|
|
s.get().Warningln(args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Warningf(format string, args ...interface{}) {
|
|
s.get().Warningf(format, args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Error(args ...interface{}) {
|
|
s.get().Error(args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Errorln(args ...interface{}) {
|
|
s.get().Errorln(args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Errorf(format string, args ...interface{}) {
|
|
s.get().Errorf(format, args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Fatal(args ...interface{}) {
|
|
s.get().Fatal(args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Fatalln(args ...interface{}) {
|
|
s.get().Fatalln(args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) Fatalf(format string, args ...interface{}) {
|
|
s.get().Fatalf(format, args)
|
|
}
|
|
|
|
func (s *settableLoggerV2) V(l int) bool {
|
|
return s.get().V(l)
|
|
}
|