log API requests

This commit is contained in:
raf 2025-02-08 16:46:07 +03:00
parent b7319e6bfc
commit fee1ae20ed
No known key found for this signature in database
GPG key ID: EED98D11B85A2819

26
main.go
View file

@ -48,15 +48,19 @@ func main() {
images = getImages() images = getImages()
http.HandleFunc("/", homeHandler) // Add request logging middleware
http.HandleFunc("/api/id", idHandler) mux := http.NewServeMux()
http.HandleFunc("/api/list", listHandler) mux.HandleFunc("/", homeHandler)
http.HandleFunc("/api/random", randomHandler) mux.HandleFunc("/api/id", idHandler)
mux.HandleFunc("/api/list", listHandler)
http.HandleFunc("/api/", func(w http.ResponseWriter, r *http.Request) { mux.HandleFunc("/api/random", randomHandler)
mux.HandleFunc("/api/", func(w http.ResponseWriter, r *http.Request) {
http.Error(w, "Invalid API path", http.StatusNotFound) http.Error(w, "Invalid API path", http.StatusNotFound)
}) })
// Wrap the mux with the logging middleware
http.Handle("/", logRequest(mux))
log.Println("Server started at port", port) log.Println("Server started at port", port)
log.Fatal(http.ListenAndServe(":"+port, nil)) log.Fatal(http.ListenAndServe(":"+port, nil))
} }
@ -125,6 +129,16 @@ func listHandler(w http.ResponseWriter, r *http.Request) {
w.Write(jsonData) w.Write(jsonData)
} }
func logRequest(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
logger.Infof("Started %s %s", r.Method, r.URL.Path)
next.ServeHTTP(w, r)
duration := time.Since(start)
logger.Infof("Completed %s %s in %v", r.Method, r.URL.Path, duration)
})
}
func randomHandler(w http.ResponseWriter, r *http.Request) { func randomHandler(w http.ResponseWriter, r *http.Request) {
rand.Seed(time.Now().UnixNano()) rand.Seed(time.Now().UnixNano())
i := rand.Intn(len(images)) i := rand.Intn(len(images))