github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/wrapper/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "log" 6 7 "context" 8 proto "github.com/micro/go-micro/examples/service/proto" 9 "github.com/micro/go-micro/v2" 10 "github.com/micro/go-micro/v2/server" 11 ) 12 13 type Greeter struct{} 14 15 func (g *Greeter) Hello(ctx context.Context, req *proto.Request, rsp *proto.Response) error { 16 rsp.Greeting = "Hello " + req.Name 17 return nil 18 } 19 20 // logWrapper is a handler wrapper 21 func logWrapper(fn server.HandlerFunc) server.HandlerFunc { 22 return func(ctx context.Context, req server.Request, rsp interface{}) error { 23 log.Printf("[wrapper] server request: %v", req.Endpoint()) 24 err := fn(ctx, req, rsp) 25 return err 26 } 27 } 28 29 func main() { 30 service := micro.NewService( 31 micro.Name("greeter"), 32 // wrap the handler 33 micro.WrapHandler(logWrapper), 34 ) 35 36 service.Init() 37 38 proto.RegisterGreeterHandler(service.Server(), new(Greeter)) 39 40 if err := service.Run(); err != nil { 41 fmt.Println(err) 42 } 43 }