grpc默認提供了客戶端和服務端的trace日誌,惋惜沒有提供自定義接口,當前只能查看基本的事件日誌和請求日誌,對於基本的請求狀態查看也是頗有幫助的,客戶端與服務端基本一致,這裏已服務端開啓trace爲例,修改hello項目的server代碼:git
server/main.gogithub
package main import ( "net" "net/http" pb "git.vodjk.com/go-grpc/example/proto" // 引入編譯生成的包 "golang.org/x/net/context" "golang.org/x/net/trace" // 引入trace包 "google.golang.org/grpc" "google.golang.org/grpc/grpclog" ) const ( // Address gRPC服務地址 Address = "127.0.0.1:50052" ) // 定義helloService並實現約定的接口 type helloService struct{} // HelloService ... var HelloService = helloService{} func (h helloService) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { resp := new(pb.HelloReply) resp.Message = "Hello " + in.Name + "." return resp, nil } func main() { listen, err := net.Listen("tcp", Address) if err != nil { grpclog.Fatalf("failed to listen: %v", err) } // 實例化grpc Server s := grpc.NewServer() // 註冊HelloService pb.RegisterHelloServer(s, HelloService) // 開啓trace go startTrace() grpclog.Println("Listen on " + Address) s.Serve(listen) } func startTrace() { trace.AuthRequest = func(req *http.Request) (any, sensitive bool) { return true, true } go http.ListenAndServe(":50051", nil) grpclog.Println("Trace listen on 50051") }
這裏咱們開啓一個http服務監聽50051端口,用來查看grpc請求的trace信息golang
運行:tcp
go run main.go Listen on 127.0.0.1:50052 Trace listen on 50051 // 進入client目錄執行一次客戶端請求
訪問:localhost:50051/debug/events,結果如圖:google
能夠看到服務端註冊的服務和服務正常啓動的事件信息,默認trace中只有這一個事件spa
訪問:localhost:50051/debug/requests,結果如圖:debug
這裏能夠顯示最近的請求狀態,包括請求的服務、參數、耗時、響應,對於簡單的狀態查看仍是很方便的,默認值顯示最近10條記錄,不能夠修改。日誌
go-grpc-examplecode