Add middleware to include the request ID in all logs.

This commit is contained in:
mikestefanello 2021-12-08 21:55:30 -05:00
parent 4096691df0
commit 26e456eae3
5 changed files with 28 additions and 10 deletions

View file

@ -20,21 +20,19 @@ type CachedPage struct {
func PageCache(ch *cache.Cache) echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
key := c.Request().URL.String()
res, err := marshaler.New(ch).Get(c.Request().Context(), key, new(CachedPage))
res, err := marshaler.New(ch).Get(c.Request().Context(), c.Request().URL.String(), new(CachedPage))
if err != nil {
if err == redis.Nil {
c.Logger().Infof("no cached page for: %s", key)
c.Logger().Infof("no cached page found")
} else {
c.Logger().Errorf("failed getting cached page: %s", key)
c.Logger().Error(err)
c.Logger().Errorf("failed getting cached page: %v", err)
}
return next(c)
}
page, ok := res.(*CachedPage)
if !ok {
c.Logger().Errorf("failed casting cached page: %s", key)
c.Logger().Errorf("failed casting cached page")
return next(c)
}
@ -43,7 +41,7 @@ func PageCache(ch *cache.Cache) echo.MiddlewareFunc {
c.Response().Header().Set(k, v)
}
}
c.Logger().Infof("serving cached page for: %s", key)
c.Logger().Infof("serving cached page")
return c.HTMLBlob(page.StatusCode, page.HTML)
}

19
middleware/log.go Normal file
View file

@ -0,0 +1,19 @@
package middleware
import (
"fmt"
"github.com/labstack/echo/v4"
)
// LogRequestID includes the request ID in all logs for the given request
func LogRequestID() echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
rid := c.Response().Header().Get(echo.HeaderXRequestID)
format := fmt.Sprintf(`{"time":"${time_rfc3339_nano}","id":"%s","level":"${level}","prefix":"${prefix}","file":"${short_file}","line":"${line}"}`, rid)
c.Logger().SetHeader(format)
return next(c)
}
}
}