Skip to content

Instantly share code, notes, and snippets.

@omarqureshi
Created January 18, 2014 17:04
Show Gist options
  • Save omarqureshi/8493231 to your computer and use it in GitHub Desktop.
Save omarqureshi/8493231 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"net/http"
"log"
"io"
"io/ioutil"
"os"
"github.com/gorilla/mux"
)
var (
TRACE *log.Logger
INFO *log.Logger
WARNING *log.Logger
ERROR *log.Logger
)
func initLogger(traceHandle io.Writer, infoHandle io.Writer, warningHandle io.Writer, errorHandle io.Writer) {
TRACE = log.New(traceHandle,
"TRACE: ",
log.Ldate|log.Ltime|log.Lshortfile)
INFO = log.New(infoHandle,
"INFO: ",
log.Ldate|log.Ltime|log.Lshortfile)
WARNING = log.New(warningHandle,
"WARNING: ",
log.Ldate|log.Ltime|log.Lshortfile)
ERROR = log.New(errorHandle,
"ERROR: ",
log.Ldate|log.Ltime|log.Lshortfile)
}
func PageHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Serving %s!", r.URL.Path[1:])
}
func ChainedHandler(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
INFO.Println(r.URL.Path)
h.ServeHTTP(w, r)
})
}
func main() {
initLogger(ioutil.Discard, os.Stdout, os.Stdout, os.Stderr)
router := mux.NewRouter()
router.HandleFunc("/{page}", PageHandler)
chained_handler := ChainedHandler(router)
http.ListenAndServe(":8080", chained_handler)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment