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  }