diff options
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) + }) +} |
