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¶ms=[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