Replace zerolog with log/slog from stdlib

- Rewrite logger package to use slog with LevelVar for dynamic levels
- Update all packages to use *slog.Logger instead of *zerolog.Logger
- Use TextHandler for TTY (dev), JSONHandler for production
- Add make check target (runs lint + test)
- Add make test target
This commit is contained in:
2025-12-27 12:02:05 +07:00
parent a8412af0c2
commit fb347b96df
14 changed files with 76 additions and 129 deletions

View File

@@ -20,9 +20,9 @@ func (s *Server) serveUntilShutdown() {
// this does any necessary setup in each handler
s.SetupRoutes()
s.log.Info().Str("listenaddr", listenAddr).Msg("http begin listen")
s.log.Info("http begin listen", "listenaddr", listenAddr)
if err := s.httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
s.log.Error().Msgf("listen:%+s\n", err)
s.log.Error("listen error", "error", err)
if s.cancelFunc != nil {
s.cancelFunc()
}

View File

@@ -3,6 +3,7 @@ package server
import (
"context"
"fmt"
"log/slog"
"net/http"
"os"
"os/signal"
@@ -14,7 +15,6 @@ import (
"git.eeqj.de/sneak/gohttpserver/internal/handlers"
"git.eeqj.de/sneak/gohttpserver/internal/logger"
"git.eeqj.de/sneak/gohttpserver/internal/middleware"
"github.com/rs/zerolog"
"go.uber.org/fx"
"github.com/getsentry/sentry-go"
@@ -43,7 +43,7 @@ type Server struct {
startupTime time.Time
exitCode int
sentryEnabled bool
log *zerolog.Logger
log *slog.Logger
ctx context.Context
cancelFunc context.CancelFunc
httpServer *http.Server
@@ -103,10 +103,10 @@ func (s *Server) enableSentry() {
Release: fmt.Sprintf("%s-%s", s.params.Globals.Appname, s.params.Globals.Version),
})
if err != nil {
s.log.Fatal().Err(err).Msg("sentry init failure")
return
s.log.Error("sentry init failure", "error", err)
os.Exit(1)
}
s.log.Info().Msg("sentry error reporting activated")
s.log.Info("sentry error reporting activated")
s.sentryEnabled = true
}
@@ -121,7 +121,7 @@ func (s *Server) serve() int {
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
// block and wait for signal
sig := <-c
s.log.Info().Msgf("signal received: %+v", sig)
s.log.Info("signal received", "signal", sig)
if s.cancelFunc != nil {
// cancelling the main context will trigger a clean
// shutdown.
@@ -140,7 +140,7 @@ func (s *Server) serve() int {
}
func (s *Server) cleanupForExit() {
s.log.Info().Msg("cleaning up")
s.log.Info("cleaning up")
// FIXME unimplemented
// close database connections or whatever
}
@@ -150,9 +150,7 @@ func (s *Server) cleanShutdown() {
s.exitCode = 0
ctxShutdown, shutdownCancel := context.WithTimeout(context.Background(), 5*time.Second)
if err := s.httpServer.Shutdown(ctxShutdown); err != nil {
s.log.Error().
Err(err).
Msg("server clean shutdown failed")
s.log.Error("server clean shutdown failed", "error", err)
}
if shutdownCancel != nil {
shutdownCancel()