Misc cleanup.

This commit is contained in:
mikestefanello 2024-06-15 09:09:36 -04:00
parent 9acf73a4d9
commit 6a7070a729
6 changed files with 21 additions and 18 deletions

View File

@ -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

View File

@ -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:

View File

@ -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,
)
}
}

View File

@ -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
}

View File

@ -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

View File

@ -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()