github.com/annwntech/go-micro/v2@v2.9.5/debug/log/kubernetes/stream.go (about) 1 package kubernetes 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "os" 7 "sync" 8 9 "github.com/annwntech/go-micro/v2/debug/log" 10 ) 11 12 func write(l log.Record) error { 13 m, err := json.Marshal(l) 14 if err == nil { 15 _, err := fmt.Fprintf(os.Stderr, "%s", m) 16 return err 17 } 18 return err 19 } 20 21 type kubeStream struct { 22 // the k8s log stream 23 stream chan log.Record 24 sync.Mutex 25 // the stop chan 26 stop chan bool 27 } 28 29 func (k *kubeStream) Chan() <-chan log.Record { 30 return k.stream 31 } 32 33 func (k *kubeStream) Stop() error { 34 k.Lock() 35 defer k.Unlock() 36 select { 37 case <-k.stop: 38 return nil 39 default: 40 close(k.stop) 41 close(k.stream) 42 } 43 return nil 44 }