github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/wrapper/cli/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 6 "context" 7 proto "github.com/micro/go-micro/examples/service/proto" 8 "github.com/micro/go-micro/v2" 9 "github.com/micro/go-micro/v2/client" 10 ) 11 12 // log wrapper logs every time a request is made 13 type logWrapper struct { 14 client.Client 15 } 16 17 func (l *logWrapper) Call(ctx context.Context, req client.Request, rsp interface{}, opts ...client.CallOption) error { 18 fmt.Printf("[wrapper] client request service: %s method: %s\n", req.Service(), req.Endpoint()) 19 return l.Client.Call(ctx, req, rsp) 20 } 21 22 // Implements client.Wrapper as logWrapper 23 func logWrap(c client.Client) client.Client { 24 return &logWrapper{c} 25 } 26 27 func main() { 28 service := micro.NewService( 29 micro.Name("greeter.client"), 30 // wrap the client 31 micro.WrapClient(logWrap), 32 ) 33 34 service.Init() 35 36 greeter := proto.NewGreeterService("greeter", service.Client()) 37 38 rsp, err := greeter.Hello(context.TODO(), &proto.Request{Name: "John"}) 39 if err != nil { 40 fmt.Println(err) 41 return 42 } 43 44 fmt.Println(rsp.Greeting) 45 46 }