summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/server/middleware.go13
-rw-r--r--internal/server/server.go15
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 {