From 50dda8ef6c6c6bc8684f3b639bc4639ba98e3991 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 2 Apr 2014 23:39:02 +1100 Subject: [PATCH] ResponseWriter wrap to log status code. --- file-server.go | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/file-server.go b/file-server.go index cdb726f..978e2ef 100644 --- a/file-server.go +++ b/file-server.go @@ -7,13 +7,21 @@ import ( "os" ) -type loggingHandler struct { - h http.Handler +type loggingResponseWriter struct { + http.ResponseWriter } -func (f *loggingHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - log.Printf("%s %s", r.Method, r.URL) - f.h.ServeHTTP(w, r) +func (w *loggingResponseWriter) WriteHeader(code int) { + log.Printf("%d", code) + w.ResponseWriter.WriteHeader(code) +} + +func wrapHandler(handler http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + lw := &loggingResponseWriter{w} + log.Printf("%s %s", r.Method, r.URL) + handler.ServeHTTP(lw, r) + }) } func main() { @@ -22,13 +30,11 @@ func main() { log.Fatal(err) } - lh := &loggingHandler{http.FileServer(http.Dir(wd))} - port := 8001 log.Printf("Starting server on port %d", port) addr := fmt.Sprintf(":%d", port) - log.Fatal(http.ListenAndServe(addr, lh)) + log.Fatal(http.ListenAndServe(addr, wrapHandler(http.FileServer(http.Dir(wd))))) }