installed logger

This commit is contained in:
2026-01-11 16:54:50 -07:00
parent eed88b0764
commit 9de51c3925
12 changed files with 116 additions and 42 deletions
+64 -5
View File
@@ -1,6 +1,7 @@
package server
import (
"context"
"encoding/json"
"fmt"
"html/template"
@@ -9,6 +10,7 @@ import (
"path"
"strconv"
"strings"
"time"
"github.com/angelbeltran/templater"
@@ -36,6 +38,7 @@ type Server struct {
}
func NewServer(
ctx context.Context,
logger *slog.Logger,
contentDir string,
rawEvents *raw_events.Store,
@@ -43,14 +46,49 @@ func NewServer(
etsy *etsy_platform.Platform,
auth *authentication.Authenticator,
) *Server {
reqIDCh := newRequestIDProvider(ctx)
reqLog := logger.WithGroup("request")
mux := response.NewMux(func(fn response.HandlerFunc) response.HandlerFunc {
return func(r *http.Request) (response.Response, error) {
res, err := fn(r)
if err != nil {
status := response.GetStatusFromError(err)
start := time.Now()
// TODO: get better logger
fmt.Printf("[ERROR]: %d: %s; %s\n", status, r.URL, err)
args := []any{
"id", <-reqIDCh,
"url", r.URL,
}
reqLog.Debug("Request", args...)
res, err := fn(r)
end := time.Now()
var status int
if err != nil {
status = response.GetStatusFromError(err)
} else {
var ok bool
if status, ok = res.GetStatus(); !ok {
status = http.StatusOK
}
}
args = append(args,
"status", status,
"elapsed", time.Duration(end.UnixNano()-start.UnixNano()),
)
switch status / 100 {
case 1:
reqLog.Debug("Response", args...)
case 2:
reqLog.Debug("Response", args...)
case 3:
reqLog.Debug("Response", args...)
case 4:
reqLog.Warn("Response", args...)
default:
reqLog.Error("Response", args...)
}
return res, err
@@ -223,3 +261,24 @@ func mapConstantErrorsToHTTPErrors(err error) error {
}
return err
}
func newRequestIDProvider(ctx context.Context) <-chan int {
reqIDCh := make(chan int)
go func() {
defer close(reqIDCh)
nextReqID := 1
for {
select {
case reqIDCh <- nextReqID:
nextReqID += 1
case <-ctx.Done():
return
}
}
}()
return reqIDCh
}