From fe06ab0059bb7394a59466a06d1fcfea2091d4e0 Mon Sep 17 00:00:00 2001
From: a <a@a.a>
Date: Mon, 29 Aug 2022 16:33:24 -0500
Subject: [PATCH] add logging middleware

---
 example/proxy/main.go |  8 +++++---
 middleware/log.go     | 20 ++++++++++++++++++++
 2 files changed, 25 insertions(+), 3 deletions(-)
 create mode 100644 middleware/log.go

diff --git a/example/proxy/main.go b/example/proxy/main.go
index d6e6651..26c612c 100644
--- a/example/proxy/main.go
+++ b/example/proxy/main.go
@@ -6,13 +6,13 @@ import (
 	"net/http"
 
 	"gfx.cafe/open/jrpc"
+	"gfx.cafe/open/jrpc/middleware"
 )
 
 func main() {
 
 	r := jrpc.NewRouter()
-	srv := jrpc.NewServer(r)
-
+	r.Use(middleware.Logger)
 	c, err := jrpc.Dial("wss://mainnet.rpc.gfx.xyz")
 	if err != nil {
 		panic(err)
@@ -25,7 +25,9 @@ func main() {
 	})
 
 	log.Println("running on 8855")
+
+	srv := jrpc.NewServer(r)
 	log.Println(http.ListenAndServe(":8855", srv))
 }
 
-// http://localhost:8855/?method=echo&params=[1,2,3]
+// http://localhost:8855/?method=eth_blockNumber
diff --git a/middleware/log.go b/middleware/log.go
new file mode 100644
index 0000000..8d3072e
--- /dev/null
+++ b/middleware/log.go
@@ -0,0 +1,20 @@
+package middleware
+
+// Ported from Goji's middleware, source:
+// jrpcs://github.com/zenazn/goji/tree/master/web/middleware
+
+import (
+	"time"
+
+	"gfx.cafe/open/jrpc"
+	"git.tuxpa.in/a/zlog/log"
+)
+
+func Logger(next jrpc.Handler) jrpc.Handler {
+	fn := func(w jrpc.ResponseWriter, r *jrpc.Request) {
+		start := time.Now()
+		next.ServeRPC(w, r)
+		log.Trace().Dur("dur", time.Now().Sub(start)).Str("method", r.Method()).Str("params", string(r.Msg().Params)).Msg("RPC Request")
+	}
+	return jrpc.HandlerFunc(fn)
+}
-- 
GitLab