diff options
| author | mihna123 <mihailonvojinovic@gmail.com> | 2026-08-21 21:20:28 +0200 |
|---|---|---|
| committer | mihna123 <mihailonvojinovic@gmail.com> | 2026-08-21 21:20:28 +0200 |
| commit | b840ed889f464d4be3a1fabe37795c8afe59dfeb (patch) | |
| tree | a1d7356c3efd69cffb4596dd0732d8461de9e78f | |
| parent | 848ce19b5097e4d26b0106f3158ec2140e52b5a4 (diff) | |
| download | openstore-b840ed889f464d4be3a1fabe37795c8afe59dfeb.tar.gz openstore-b840ed889f464d4be3a1fabe37795c8afe59dfeb.zip | |
logs: handle all loggs with slog
| -rw-r--r-- | cmd/openstore/main.go | 10 | ||||
| -rw-r--r-- | internal/server/middleware.go | 13 | ||||
| -rw-r--r-- | internal/server/server.go | 15 |
3 files changed, 28 insertions, 10 deletions
diff --git a/cmd/openstore/main.go b/cmd/openstore/main.go index 90028ff..65d7afb 100644 --- a/cmd/openstore/main.go +++ b/cmd/openstore/main.go @@ -1,14 +1,18 @@ package main import ( - "log" + "log/slog" + "os" "codeberg.org/mihna123/openstore/internal/server" ) func main() { + slog.SetDefault(slog.New(slog.NewTextHandler(os.Stdout, nil))) conf := &server.Config{Name: "OpenStore"} s := server.New(conf) - err := s.Serve(":3000") - log.Fatal(err) + if err := s.Serve(":3000"); err != nil { + slog.Error("server failed", "err", err) + os.Exit(1) + } } 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 { |
