diff options
| author | Felix Hanley <felix@userspace.com.au> | 2016-12-05 08:16:58 +0000 |
|---|---|---|
| committer | Felix Hanley <felix@userspace.com.au> | 2016-12-05 08:16:58 +0000 |
| commit | b049991a46a2f619344bd6e915745703864d0134 (patch) | |
| tree | ec1d3897a7b69c7c63a3774d4c42dfbb8cb46432 /logger.go | |
| parent | e1c3d6f7db06d592538f1162b2b6b9f1b6efa330 (diff) | |
| download | go-dict2rest-b049991a46a2f619344bd6e915745703864d0134.tar.gz go-dict2rest-b049991a46a2f619344bd6e915745703864d0134.tar.bz2 | |
Diffstat (limited to 'logger.go')
| -rw-r--r-- | logger.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/logger.go b/logger.go new file mode 100644 index 0000000..709666b --- /dev/null +++ b/logger.go @@ -0,0 +1,27 @@ +package main + +import ( + "log" + "net/http" + "time" +) + +// Logging middleware +func Logger(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + startTime := time.Now() + + // Start buffered write + bw := new(Buffer) + + next.ServeHTTP(bw, r) + + // Write out the buffer + size, _ := bw.Apply(w) + + // Usually milliseconds + latency := time.Since(startTime).Seconds() * 1000 + + log.Printf("%s %s %d %d (%.1fms)\n", r.Method, r.URL.Path, bw.Status, size, latency) + }) +} |
