diff --git a/README.md b/README.md index bea883f..7859d95 100644 --- a/README.md +++ b/README.md @@ -1250,7 +1250,7 @@ The `SetLogger()` middleware has been added to the router which sets an initiali The `LogRequest()` middleware is a replacement for Echo's `Logger()` middleware which produces a log of every request made, but uses our logger rather than Echo's. ``` -2024/06/14 19:44:16 INFO request_id=snoonQoyRSEBcQthnIzIWIeVRxmutyAV ip=::1 host=localhost:8000 method=GET path=/about referer=http://localhost:8000/ status=200 bytes_in=0 bytes_out=6695 latency=18.022502ms +2024/06/15 09:07:11 INFO GET /contact request_id=gNblvugTKcyLnBYPMPTwMPEqDOioVLKp ip=::1 host=localhost:8000 referer="" status=200 bytes_in=0 bytes_out=5925 latency=107.527803ms ``` ## Roadmap diff --git a/docker-compose.yml b/docker-compose.yml index 8dc8b38..fedc25a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,7 @@ services: ports: - "127.0.0.1:6379:6379" db: - # PG 16 is currenly not supported https://github.com/ent/ent/issues/3750 + # PG 16 is currently not supported https://github.com/ent/ent/issues/3750 image: postgres:15-alpine container_name: pagoda_db ports: diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index f40d35c..4f216ff 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -137,7 +137,9 @@ func (c *Controller) cachePage(ctx echo.Context, page Page, html *bytes.Buffer) case err == nil: log.Ctx(ctx).Debug("cached page") case !context.IsCanceledError(err): - log.Ctx(ctx).Error("failed to cache page", "error", err) + log.Ctx(ctx).Error("failed to cache page", + "error", err, + ) } } diff --git a/pkg/controller/page.go b/pkg/controller/page.go index 875adc2..9bed5f2 100644 --- a/pkg/controller/page.go +++ b/pkg/controller/page.go @@ -98,8 +98,12 @@ type Page struct { // This will only be populated if the request ID middleware is in effect for the given request. RequestID string + // HTMX provides the ability to interact with the HTMX library HTMX struct { - Request htmx.Request + // Request contains the information provided by HTMX about the current request + Request htmx.Request + + // Response contains values to pass back to HTMX Response *htmx.Response } diff --git a/pkg/middleware/log.go b/pkg/middleware/log.go index b8f8d4b..6964b0c 100644 --- a/pkg/middleware/log.go +++ b/pkg/middleware/log.go @@ -1,6 +1,7 @@ package middleware import ( + "fmt" "strconv" "time" @@ -45,14 +46,6 @@ func LogRequest() echo.MiddlewareFunc { sub := log.Ctx(ctx).With( "ip", ctx.RealIP(), "host", req.Host, - "method", req.Method, - "path", func() string { - p := req.URL.Path - if p == "" { - p = "/" - } - return p - }(), "referer", req.Referer(), "status", res.Status, "bytes_in", func() string { @@ -66,12 +59,18 @@ func LogRequest() echo.MiddlewareFunc { "latency", stop.Sub(start).String(), ) - // TODO is there a (better) way to log without a message? + msg := fmt.Sprintf("%s %s", req.Method, func() string { + p := req.URL.Path + if p == "" { + p = "/" + } + return p + }()) if res.Status >= 500 { - sub.Error("") + sub.Error(msg) } else { - sub.Info("") + sub.Info(msg) } return nil diff --git a/pkg/middleware/log_test.go b/pkg/middleware/log_test.go index 3cf136f..0549e24 100644 --- a/pkg/middleware/log_test.go +++ b/pkg/middleware/log_test.go @@ -3,7 +3,6 @@ package middleware import ( "context" "log/slog" - "net/http" "testing" "github.com/labstack/echo/v4" @@ -96,14 +95,13 @@ func TestLogRequest(t *testing.T) { assert.Equal(t, "param", h.GetAttr("previous")) assert.Equal(t, "21.12.12.21", h.GetAttr("ip")) assert.Equal(t, "test.localhost", h.GetAttr("host")) - assert.Equal(t, "/abc", h.GetAttr("path")) - assert.Equal(t, http.MethodGet, h.GetAttr("method")) assert.Equal(t, "ref.com", h.GetAttr("referer")) assert.Equal(t, "200", h.GetAttr("status")) assert.Equal(t, "0", h.GetAttr("bytes_in")) assert.Equal(t, "5", h.GetAttr("bytes_out")) assert.NotEmpty(t, h.GetAttr("latency")) assert.Equal(t, "INFO", h.level) + assert.Equal(t, "GET /abc", h.msg) statusCode = 500 exec()