aboutsummaryrefslogtreecommitdiff
path: root/logger.go
diff options
context:
space:
mode:
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)
+ })
+}