Add structured HTTP request logging and increase timeouts
- Replace chi's Logger middleware with structured slog-based logging - Log request start (debug) and completion (info/warn/error by status) - Include method, path, status, duration_ms, remote_addr in logs - Increase request timeout from 8s to 30s for slow queries - Add read/write/idle timeouts to HTTP server config - Better server startup logging to confirm listening state
This commit is contained in:
@@ -57,16 +57,27 @@ func (s *Server) Start() error {
|
||||
port = "8080"
|
||||
}
|
||||
|
||||
const readHeaderTimeout = 40 * time.Second
|
||||
const (
|
||||
readHeaderTimeout = 40 * time.Second
|
||||
readTimeout = 60 * time.Second
|
||||
writeTimeout = 60 * time.Second
|
||||
idleTimeout = 120 * time.Second
|
||||
)
|
||||
|
||||
s.srv = &http.Server{
|
||||
Addr: ":" + port,
|
||||
Handler: s.router,
|
||||
ReadHeaderTimeout: readHeaderTimeout,
|
||||
ReadTimeout: readTimeout,
|
||||
WriteTimeout: writeTimeout,
|
||||
IdleTimeout: idleTimeout,
|
||||
}
|
||||
|
||||
s.logger.Info("Starting HTTP server", "port", port)
|
||||
s.logger.Info("Starting HTTP server", "port", port, "addr", s.srv.Addr)
|
||||
|
||||
// Start in goroutine but log when actually listening
|
||||
go func() {
|
||||
s.logger.Info("HTTP server listening", "addr", s.srv.Addr)
|
||||
if err := s.srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
||||
s.logger.Error("HTTP server error", "error", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user