@@ -509,7 +509,7 @@ type loggingT struct {
509509 addDirHeader bool
510510
511511 // If set, all output will be redirected unconditionally to the provided logr.Logger
512- logr logr.Logger
512+ logr * logr.Logger
513513
514514 // If true, messages will not be propagated to lower severity log levels
515515 oneOutput bool
@@ -698,30 +698,30 @@ func (buf *buffer) someDigits(i, d int) int {
698698 return copy (buf .tmp [i :], buf .tmp [j :])
699699}
700700
701- func (l * loggingT ) println (s severity , logr logr.Logger , filter LogFilter , args ... interface {}) {
701+ func (l * loggingT ) println (s severity , logger * logr.Logger , filter LogFilter , args ... interface {}) {
702702 buf , file , line := l .header (s , 0 )
703- // if logr is set, we clear the generated header as we rely on the backing
704- // logr implementation to print headers
705- if logr != nil {
703+ // if logger is set, we clear the generated header as we rely on the backing
704+ // logger implementation to print headers
705+ if logger != nil {
706706 l .putBuffer (buf )
707707 buf = l .getBuffer ()
708708 }
709709 if filter != nil {
710710 args = filter .Filter (args )
711711 }
712712 fmt .Fprintln (buf , args ... )
713- l .output (s , logr , buf , 0 /* depth */ , file , line , false )
713+ l .output (s , logger , buf , 0 /* depth */ , file , line , false )
714714}
715715
716- func (l * loggingT ) print (s severity , logr logr.Logger , filter LogFilter , args ... interface {}) {
717- l .printDepth (s , logr , filter , 1 , args ... )
716+ func (l * loggingT ) print (s severity , logger * logr.Logger , filter LogFilter , args ... interface {}) {
717+ l .printDepth (s , logger , filter , 1 , args ... )
718718}
719719
720- func (l * loggingT ) printDepth (s severity , logr logr.Logger , filter LogFilter , depth int , args ... interface {}) {
720+ func (l * loggingT ) printDepth (s severity , logger * logr.Logger , filter LogFilter , depth int , args ... interface {}) {
721721 buf , file , line := l .header (s , depth )
722722 // if logr is set, we clear the generated header as we rely on the backing
723723 // logr implementation to print headers
724- if logr != nil {
724+ if logger != nil {
725725 l .putBuffer (buf )
726726 buf = l .getBuffer ()
727727 }
@@ -732,14 +732,14 @@ func (l *loggingT) printDepth(s severity, logr logr.Logger, filter LogFilter, de
732732 if buf .Bytes ()[buf .Len ()- 1 ] != '\n' {
733733 buf .WriteByte ('\n' )
734734 }
735- l .output (s , logr , buf , depth , file , line , false )
735+ l .output (s , logger , buf , depth , file , line , false )
736736}
737737
738- func (l * loggingT ) printf (s severity , logr logr.Logger , filter LogFilter , format string , args ... interface {}) {
738+ func (l * loggingT ) printf (s severity , logger * logr.Logger , filter LogFilter , format string , args ... interface {}) {
739739 buf , file , line := l .header (s , 0 )
740740 // if logr is set, we clear the generated header as we rely on the backing
741741 // logr implementation to print headers
742- if logr != nil {
742+ if logger != nil {
743743 l .putBuffer (buf )
744744 buf = l .getBuffer ()
745745 }
@@ -750,17 +750,17 @@ func (l *loggingT) printf(s severity, logr logr.Logger, filter LogFilter, format
750750 if buf .Bytes ()[buf .Len ()- 1 ] != '\n' {
751751 buf .WriteByte ('\n' )
752752 }
753- l .output (s , logr , buf , 0 /* depth */ , file , line , false )
753+ l .output (s , logger , buf , 0 /* depth */ , file , line , false )
754754}
755755
756756// printWithFileLine behaves like print but uses the provided file and line number. If
757757// alsoLogToStderr is true, the log message always appears on standard error; it
758758// will also appear in the log file unless --logtostderr is set.
759- func (l * loggingT ) printWithFileLine (s severity , logr logr.Logger , filter LogFilter , file string , line int , alsoToStderr bool , args ... interface {}) {
759+ func (l * loggingT ) printWithFileLine (s severity , logger * logr.Logger , filter LogFilter , file string , line int , alsoToStderr bool , args ... interface {}) {
760760 buf := l .formatHeader (s , file , line )
761761 // if logr is set, we clear the generated header as we rely on the backing
762762 // logr implementation to print headers
763- if logr != nil {
763+ if logger != nil {
764764 l .putBuffer (buf )
765765 buf = l .getBuffer ()
766766 }
@@ -771,28 +771,28 @@ func (l *loggingT) printWithFileLine(s severity, logr logr.Logger, filter LogFil
771771 if buf .Bytes ()[buf .Len ()- 1 ] != '\n' {
772772 buf .WriteByte ('\n' )
773773 }
774- l .output (s , logr , buf , 2 /* depth */ , file , line , alsoToStderr )
774+ l .output (s , logger , buf , 2 /* depth */ , file , line , alsoToStderr )
775775}
776776
777777// if loggr is specified, will call loggr.Error, otherwise output with logging module.
778- func (l * loggingT ) errorS (err error , loggr logr.Logger , filter LogFilter , depth int , msg string , keysAndValues ... interface {}) {
778+ func (l * loggingT ) errorS (err error , logger * logr.Logger , filter LogFilter , depth int , msg string , keysAndValues ... interface {}) {
779779 if filter != nil {
780780 msg , keysAndValues = filter .FilterS (msg , keysAndValues )
781781 }
782- if loggr != nil {
783- logr .WithCallDepth (loggr , depth + 2 ).Error (err , msg , keysAndValues ... )
782+ if logger != nil {
783+ logger .WithCallDepth (depth + 2 ).Error (err , msg , keysAndValues ... )
784784 return
785785 }
786786 l .printS (err , errorLog , depth + 1 , msg , keysAndValues ... )
787787}
788788
789789// if loggr is specified, will call loggr.Info, otherwise output with logging module.
790- func (l * loggingT ) infoS (loggr logr.Logger , filter LogFilter , depth int , msg string , keysAndValues ... interface {}) {
790+ func (l * loggingT ) infoS (logger * logr.Logger , filter LogFilter , depth int , msg string , keysAndValues ... interface {}) {
791791 if filter != nil {
792792 msg , keysAndValues = filter .FilterS (msg , keysAndValues )
793793 }
794- if loggr != nil {
795- logr .WithCallDepth (loggr , depth + 2 ).Info (msg , keysAndValues ... )
794+ if logger != nil {
795+ logger .WithCallDepth (depth + 2 ).Info (msg , keysAndValues ... )
796796 return
797797 }
798798 l .printS (nil , infoLog , depth + 1 , msg , keysAndValues ... )
@@ -866,7 +866,14 @@ func SetLogger(logr logr.Logger) {
866866 logging .mu .Lock ()
867867 defer logging .mu .Unlock ()
868868
869- logging .logr = logr
869+ logging .logr = & logr
870+ }
871+
872+ func clearLogger () {
873+ logging .mu .Lock ()
874+ defer logging .mu .Unlock ()
875+
876+ logging .logr = nil
870877}
871878
872879// SetOutput sets the output destination for all severities
@@ -904,7 +911,7 @@ func LogToStderr(stderr bool) {
904911}
905912
906913// output writes the data to the log files and releases the buffer.
907- func (l * loggingT ) output (s severity , log logr.Logger , buf * buffer , depth int , file string , line int , alsoToStderr bool ) {
914+ func (l * loggingT ) output (s severity , log * logr.Logger , buf * buffer , depth int , file string , line int , alsoToStderr bool ) {
908915 l .mu .Lock ()
909916 if l .traceLocation .isSet () {
910917 if l .traceLocation .match (file , line ) {
@@ -916,9 +923,9 @@ func (l *loggingT) output(s severity, log logr.Logger, buf *buffer, depth int, f
916923 // TODO: set 'severity' and caller information as structured log info
917924 // keysAndValues := []interface{}{"severity", severityName[s], "file", file, "line", line}
918925 if s == errorLog {
919- logr .WithCallDepth (l . logr , depth + 3 ).Error (nil , string (data ))
926+ l . logr .WithCallDepth (depth + 3 ).Error (nil , string (data ))
920927 } else {
921- logr .WithCallDepth (log , depth + 3 ).Info (string (data ))
928+ log .WithCallDepth (depth + 3 ).Info (string (data ))
922929 }
923930 } else if l .toStderr {
924931 os .Stderr .Write (data )
@@ -1269,15 +1276,16 @@ func (l *loggingT) setV(pc uintptr) Level {
12691276// See the documentation of V for more information.
12701277type Verbose struct {
12711278 enabled bool
1272- logr logr.Logger
1279+ logr * logr.Logger
12731280 filter LogFilter
12741281}
12751282
12761283func newVerbose (level Level , b bool ) Verbose {
12771284 if logging .logr == nil {
12781285 return Verbose {b , nil , logging .filter }
12791286 }
1280- return Verbose {b , logging .logr .V (int (level )), logging .filter }
1287+ v := logging .logr .V (int (level ))
1288+ return Verbose {b , & v , logging .filter }
12811289}
12821290
12831291// V reports whether verbosity at the call site is at least the requested level.
0 commit comments