simple logging for http requests
(logger log.Logger, next nhttp.Handler)
| 31 | |
| 32 | // simple logging for http requests |
| 33 | func Logging(logger log.Logger, next nhttp.Handler) nhttp.Handler { |
| 34 | return nhttp.HandlerFunc(func(w http.ResponseWriter, r *nhttp.Request) { |
| 35 | startTime := time.Now() |
| 36 | |
| 37 | // Create a response writer that captures the status code |
| 38 | lrw := &loggingResponseWriter{ResponseWriter: w} |
| 39 | next.ServeHTTP(lrw, r) |
| 40 | |
| 41 | _ = logger.Log(log.LevelInfo, |
| 42 | "uri", r.RequestURI, |
| 43 | "code", lrw.statusCode, |
| 44 | "method", r.Method, |
| 45 | "duration", time.Since(startTime).Seconds(), |
| 46 | ) |
| 47 | }) |
| 48 | } |
| 49 | |
| 50 | // WriteHeader captures the status code |
| 51 | func (lrw *loggingResponseWriter) WriteHeader(code int) { |