aboutsummaryrefslogtreecommitdiff
path: root/logger.go
diff options
context:
space:
mode:
authorFelix Hanley <felix@userspace.com.au>2016-12-05 08:16:58 +0000
committerFelix Hanley <felix@userspace.com.au>2016-12-05 08:16:58 +0000
commitb049991a46a2f619344bd6e915745703864d0134 (patch)
treeec1d3897a7b69c7c63a3774d4c42dfbb8cb46432 /logger.go
parente1c3d6f7db06d592538f1162b2b6b9f1b6efa330 (diff)
downloadgo-dict2rest-b049991a46a2f619344bd6e915745703864d0134.tar.gz
go-dict2rest-b049991a46a2f619344bd6e915745703864d0134.tar.bz2
Clean up source structure and update vendor versionsHEADmaster
Diffstat (limited to 'logger.go')
-rw-r--r--logger.go27
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)
+ })
+}