Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'internal/service/middleware/loghandler/loghandler.go')
-rw-r--r--internal/service/middleware/loghandler/loghandler.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/internal/service/middleware/loghandler/loghandler.go b/internal/service/middleware/loghandler/loghandler.go
new file mode 100644
index 000000000..8f4d17f5b
--- /dev/null
+++ b/internal/service/middleware/loghandler/loghandler.go
@@ -0,0 +1,32 @@
+package loghandler
+
+import (
+ "log"
+ "time"
+
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+)
+
+// UnaryLogHandler handles access times and errors for unary RPC's
+func UnaryLogHandler(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
+ start := time.Now()
+ resp, err := handler(ctx, req)
+ logRequest(info.FullMethod, start, err)
+ return resp, err
+}
+
+// StreamLogHandler handles access times and errors for stream RPC's
+func StreamLogHandler(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
+ start := time.Now()
+ err := handler(srv, stream)
+ logRequest(info.FullMethod, start, err)
+ return err
+}
+
+func logRequest(method string, start time.Time, err error) {
+ if err != nil {
+ log.Printf("error: %s: %v", method, err)
+ }
+ log.Printf("%s %.3f", method, time.Since(start).Seconds())
+}