Initial Commit
This commit is contained in:
30
errors.go
Normal file
30
errors.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"go.elara.ws/salix"
|
||||
)
|
||||
|
||||
// handleErr responds with an error page if an error is returned by fn
|
||||
func handleErr(ns *salix.Namespace, fn func(w http.ResponseWriter, r *http.Request) error) http.HandlerFunc {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
start := time.Now()
|
||||
err := fn(w, r)
|
||||
if err != nil {
|
||||
log.Error("Error in HTTP handler",
|
||||
slog.String("path", r.URL.Path),
|
||||
slog.Any("error", err),
|
||||
)
|
||||
ns.ExecuteTemplate(w, "error.html", map[string]any{
|
||||
"errMsg": err.Error(),
|
||||
})
|
||||
}
|
||||
log.Info("Request completed",
|
||||
slog.String("for", r.RemoteAddr),
|
||||
slog.Duration("latency", time.Since(start)),
|
||||
)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user