diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/server/middleware.go | 13 | ||||
| -rw-r--r-- | internal/server/server.go | 15 |
2 files changed, 21 insertions, 7 deletions
diff --git a/internal/server/middleware.go b/internal/server/middleware.go index fe51224..c88131c 100644 --- a/internal/server/middleware.go +++ b/internal/server/middleware.go @@ -1,8 +1,9 @@ package server import ( - "log" + "log/slog" "net/http" + "time" ) type statusRecorder struct { @@ -17,8 +18,16 @@ func (r *statusRecorder) WriteHeader(code int) { func logRequests(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + start := time.Now() recorder := &statusRecorder{ResponseWriter: w, status: http.StatusOK} next.ServeHTTP(recorder, r) - log.Printf("[%s] %s - %s: %d", r.Method, r.RequestURI, r.RemoteAddr, recorder.status) + slog.Info("request", + "method", r.Method, + "path", r.URL.Path, + "status", recorder.status, + "duration", time.Since(start), + "remote", r.RemoteAddr, + "x-forwarded-for", r.Header.Get("x-forwarded-for"), + ) }) } diff --git a/internal/server/server.go b/internal/server/server.go index 6de45ca..5beca97 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -1,7 +1,8 @@ package server import ( - "log" + "log/slog" + "net" "time" "html/template" @@ -25,7 +26,7 @@ func (s *Server) routes() { err := s.tmpl.ExecuteTemplate(w, "index.html", nil) if err != nil { - log.Printf("Error with template: %s", err.Error()) + slog.Error("render template", "err", err.Error()) return } }) @@ -33,14 +34,18 @@ func (s *Server) routes() { func (s *Server) Serve(addr string) error { httpSrv := &http.Server{ - Addr: addr, Handler: logRequests(s.mux), ReadHeaderTimeout: 5 * time.Second, WriteTimeout: 10 * time.Second, } - log.Printf("Server \"%s\" listening at %s", s.config.Name, addr) - return httpSrv.ListenAndServe() + ln, err := net.Listen("tcp", addr) + if err != nil { + return err + } + + slog.Info("listening", "name", s.config.Name, "addr", addr) + return httpSrv.Serve(ln) } func New(c *Config) *Server { |
