38 lines
		
	
	
		
			843 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			843 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package logger
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"log"
 | |
| )
 | |
| 
 | |
| type stdLogger struct {
 | |
| 	l     Logger
 | |
| 	level Level
 | |
| }
 | |
| 
 | |
| // NewStdLogger returns new *log.Logger baked by logger.Logger implementation
 | |
| func NewStdLogger(l Logger, level Level) *log.Logger {
 | |
| 	return log.New(&stdLogger{l: l, level: level}, "" /* prefix */, 0 /* flags */)
 | |
| }
 | |
| 
 | |
| func (sl *stdLogger) Write(p []byte) (int, error) {
 | |
| 	p = bytes.TrimSpace(p)
 | |
| 	sl.l.Log(sl.l.Options().Context, sl.level, string(p))
 | |
| 	return len(p), nil
 | |
| }
 | |
| 
 | |
| // RedirectStdLogger replace *log.Logger with logger.Logger implementation
 | |
| func RedirectStdLogger(l Logger, level Level) func() {
 | |
| 	flags := log.Flags()
 | |
| 	prefix := log.Prefix()
 | |
| 	writer := log.Writer()
 | |
| 	log.SetFlags(0)
 | |
| 	log.SetPrefix("")
 | |
| 	log.SetOutput(&stdLogger{l: l, level: level})
 | |
| 	return func() {
 | |
| 		log.SetFlags(flags)
 | |
| 		log.SetPrefix(prefix)
 | |
| 		log.SetOutput(writer)
 | |
| 	}
 | |
| }
 |