Latency now available with recorder and replacer

This commit is contained in:
Matthew Holt 2015-04-23 13:35:56 -06:00
parent 51139a5f56
commit 95dce5cdfc
2 changed files with 9 additions and 3 deletions

View file

@ -1,6 +1,9 @@
package middleware
import "net/http"
import (
"net/http"
"time"
)
// responseRecorder is a type of ResponseWriter that captures
// the status code written to it and also the size of the body
@ -12,6 +15,7 @@ type responseRecorder struct {
http.ResponseWriter
status int
size int
start time.Time
}
// NewResponseRecorder makes and returns a new responseRecorder,
@ -24,6 +28,7 @@ func NewResponseRecorder(w http.ResponseWriter) *responseRecorder {
return &responseRecorder{
ResponseWriter: w,
status: http.StatusOK,
start: time.Now(),
}
}

View file

@ -50,8 +50,9 @@ func NewReplacer(r *http.Request, rr *responseRecorder) replacer {
"{when}": func() string {
return time.Now().Format(timeFormat)
}(),
"{status}": strconv.Itoa(rr.status),
"{size}": strconv.Itoa(rr.size),
"{status}": strconv.Itoa(rr.status),
"{size}": strconv.Itoa(rr.size),
"{latency}": time.Since(rr.start).String(),
}
// Header placeholders