Skip to content
This repository was archived by the owner on Feb 8, 2021. It is now read-only.

Commit bd66e67

Browse files
committed
serverrpc.NewServerRPC: set unaryLoger and streamLoger as grpc interceptors
Signed-off-by: Hui Zhu <[email protected]>
1 parent 1f9e27d commit bd66e67

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

serverrpc/server.go

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ package serverrpc
33
import (
44
"net"
55

6+
"github.com/golang/glog"
67
"github.com/hyperhq/hypercontainer-utils/hlog"
78
"github.com/hyperhq/hyperd/daemon"
89
"github.com/hyperhq/hyperd/types"
10+
"golang.org/x/net/context"
911
"google.golang.org/grpc"
12+
"time"
1013
)
1114

1215
// ServerRPC is the main server for gRPC
@@ -15,10 +18,47 @@ type ServerRPC struct {
1518
daemon *daemon.Daemon
1619
}
1720

21+
type re interface {
22+
String() string
23+
}
24+
25+
func unaryLoger(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
26+
reqMsg := req.(re).String()
27+
glog.V(3).Infof("%s with request %s", info.FullMethod, reqMsg)
28+
29+
start := time.Now()
30+
resp, err = handler(ctx, req)
31+
elapsed := time.Now().Sub(start)
32+
33+
if err == nil {
34+
glog.V(3).Infof("%s elapsed %s done %v with request %s", info.FullMethod, elapsed, resp.(re).String(), reqMsg)
35+
} else {
36+
glog.Errorf("%s elapsed %s failed %v with request %s", info.FullMethod, elapsed, err, reqMsg)
37+
}
38+
39+
return resp, err
40+
}
41+
42+
func streamLoger(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
43+
glog.V(3).Infof("%s with ServerStream %v", info.FullMethod, ss)
44+
45+
start := time.Now()
46+
err := handler(srv, ss)
47+
elapsed := time.Now().Sub(start)
48+
49+
if err == nil {
50+
glog.V(3).Infof("%s elapsed %s done with ServerStream %v", info.FullMethod, elapsed, ss)
51+
} else {
52+
glog.Errorf("%s elapsed %s failed %v with ServerStream %v", info.FullMethod, elapsed, err, ss)
53+
}
54+
55+
return err
56+
}
57+
1858
// NewServerRPC creates a new ServerRPC
1959
func NewServerRPC(d *daemon.Daemon) *ServerRPC {
2060
s := &ServerRPC{
21-
server: grpc.NewServer(),
61+
server: grpc.NewServer(grpc.UnaryInterceptor(unaryLoger), grpc.StreamInterceptor(streamLoger)),
2262
daemon: d,
2363
}
2464
s.registerServer()

0 commit comments

Comments
 (0)