package service import ( "time" "github.com/micro/go-micro/v3/debug" "github.com/micro/go-micro/v3/debug/log" ) type serviceLog struct { Client *debugClient } // Read reads log entries from the logger func (s *serviceLog) Read(opts ...log.ReadOption) ([]log.Record, error) { var options log.ReadOptions for _, o := range opts { o(&options) } stream, err := s.Client.Log(options.Since, options.Count, false) if err != nil { return nil, err } defer stream.Stop() // stream the records until nothing is left var records []log.Record for record := range stream.Chan() { records = append(records, record) } return records, nil } // There is no write support func (s *serviceLog) Write(r log.Record) error { return nil } // Stream log records func (s *serviceLog) Stream() (log.Stream, error) { return s.Client.Log(time.Time{}, 0, true) } // NewLog returns a new log interface func NewLog(opts ...log.Option) log.Log { var options log.Options for _, o := range opts { o(&options) } name := options.Name // set the default name if len(name) == 0 { name = debug.DefaultName } return &serviceLog{ Client: NewClient(name), } }