-
Notifications
You must be signed in to change notification settings - Fork 0
/
http-server-request-logging.go
40 lines (40 loc) · 1.21 KB
/
http-server-request-logging.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package main
import
(
"net/http"
"os"
"log"
"github.com/gorilla/handlers"
"github.com/gorilla/mux"
)
const
(
CONN_HOST = "localhost"
CONN_PORT = "8080"
)
var GetRequestHandler = http.HandlerFunc(
func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello World!"))
})
var PostRequestHandler = http.HandlerFunc(
func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("It's a Post Request!"))
})
var PathVariableHandler = http.HandlerFunc(
func(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
name := vars["name"]
w.Write([]byte("Hi " + name))
})
func main() {
router := mux.NewRouter()
router.Handle("/", handlers.LoggingHandler(os.Stdout, http.HandlerFunc(GetRequestHandler))).Methods("GET")
logFile, err := os.OpenFile("server.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
if err != nil{
log.Fatal("error starting http server : ", err)
return
}
router.Handle("/post", handlers.LoggingHandler(logFile, PostRequestHandler)).Methods("POST")
router.Handle("/hello/{name}", handlers.CombinedLoggingHandler(logFile,PathVariableHandler)).Methods("GET")
http.ListenAndServe(CONN_HOST+ ":" + CONN_PORT, router)
}