ideas, better logging
This commit is contained in:
@@ -15,3 +15,7 @@ func main() {
|
||||
os.Setenv("FOO", "bar")
|
||||
fmt.Println(os.Getenv("FOO"))
|
||||
}
|
||||
|
||||
// == todo
|
||||
// ensure pattern
|
||||
// link to 12 factor
|
||||
|
||||
@@ -16,6 +16,7 @@ func wrapCanonicalHost(f http.HandlerFunc, canonicalHost string) http.HandlerFun
|
||||
hostPort[0] = canonicalHost
|
||||
url := "http://" + strings.Join(hostPort, ":") + req.URL.String()
|
||||
http.Redirect(res, req, url, 301)
|
||||
return
|
||||
}
|
||||
f(res, req)
|
||||
}
|
||||
|
||||
@@ -2,34 +2,33 @@ package main
|
||||
|
||||
import ("net/http"; "fmt"; "time")
|
||||
|
||||
func hello(res http.ResponseWriter, req *http.Request) {
|
||||
res.Header().Set("Content-Type", "text/plain")
|
||||
time.Sleep(time.Millisecond * 50)
|
||||
fmt.Fprintln(res, "Hello logged world")
|
||||
}
|
||||
|
||||
func wrapLogging(f http.HandlerFunc, logs chan string) http.HandlerFunc {
|
||||
return func(res http.ResponseWriter, req *http.Request) {
|
||||
start := time.Now()
|
||||
f(res, req)
|
||||
method := req.Method
|
||||
path := req.URL.Path
|
||||
elapsed := float64(time.Since(start)) / 1000000.0
|
||||
logs <- fmt.Sprintf("method=%s path=%s elapsed=%f", method, path, elapsed)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func runLogging(logs chan string) {
|
||||
for log := range logs {
|
||||
fmt.Println(log)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
func wrapLogging(f http.HandlerFunc, logs chan string) http.HandlerFunc {
|
||||
logs := make(chan string, 10000)
|
||||
go runLogging(logs)
|
||||
handler := wrapLogging(hello, logs)
|
||||
return func(res http.ResponseWriter, req *http.Request) {
|
||||
start := time.Now()
|
||||
f(res, req)
|
||||
method := req.Method
|
||||
path := req.URL.Path
|
||||
elapsed := float64(time.Since(start)) / 1000000.0
|
||||
logs <- fmt.Sprintf("method=%s path=%s elapsed=%f", method, path, elapsed)
|
||||
}
|
||||
}
|
||||
|
||||
func hello(res http.ResponseWriter, req *http.Request) {
|
||||
res.Header().Set("Content-Type", "text/plain")
|
||||
time.Sleep(time.Millisecond * 50)
|
||||
fmt.Fprintln(res, "Hello logged world")
|
||||
}
|
||||
|
||||
func main() {
|
||||
handler := wrapLogging(hello)
|
||||
http.HandleFunc("/", handler)
|
||||
http.ListenAndServe(":5000", nil)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user