go-http-log/main.go

45 lines
860 B
Go

package main
import (
"io"
"log/slog"
"net/http"
"os"
)
// main
func main() {
// Init logged
logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo}))
slog.SetDefault(logger)
// Check for port override
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
slog.Info("Starting server", "port", port)
// Start HTTP server
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
body, err := io.ReadAll(r.Body)
if err != nil {
slog.Error("Error reading request body", "error", err)
body = []byte("")
}
slog.Info("Req",
"remote", r.RemoteAddr,
"method", r.Method,
"path", r.URL.Path,
"query", r.URL.RawQuery,
"headers", r.Header,
"body", string(body),
)
w.WriteHeader(http.StatusOK)
})
http.ListenAndServe(":"+port, mux)
}