Skip to content

Instantly share code, notes, and snippets.

@gregarmer
Last active August 29, 2015 14:16
Show Gist options
  • Save gregarmer/6f39f70e790cb38fe404 to your computer and use it in GitHub Desktop.
Save gregarmer/6f39f70e790cb38fe404 to your computer and use it in GitHub Desktop.
Logging handler processing time in Go
package main
import (
"fmt"
"github.com/gorilla/mux"
"log"
"net/http"
"time"
)
// Some handlers here
func DefaultWrapper(handler http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
handler.ServeHTTP(w, r)
log.Printf("%s %s %s %s", r.RemoteAddr, time.Since(start), r.Method, r.URL)
})
}
func main() {
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/api/something", SomethingIndexHandler).Methods("GET")
router.HandleFunc("/api/something", SomethingCreateHandler).Methods("POST")
port := ":9000"
log.Printf("Starting web server on " + port)
err := http.ListenAndServe(port, DefaultWrapper(router))
if err != nil {
log.Fatal(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment