Add middleware to include the request ID in all logs.
This commit is contained in:
parent
4096691df0
commit
26e456eae3
@ -99,12 +99,11 @@ func (t *Controller) cachePage(c echo.Context, p Page, html *bytes.Buffer) {
|
||||
}
|
||||
err := marshaler.New(t.Container.Cache).Set(c.Request().Context(), key, cp, opts)
|
||||
if err != nil {
|
||||
c.Logger().Errorf("failed to cache page: %s", key)
|
||||
c.Logger().Error(err)
|
||||
c.Logger().Errorf("failed to cache page: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
c.Logger().Infof("cached page for: %s", key)
|
||||
c.Logger().Infof("cached page")
|
||||
}
|
||||
|
||||
func (t *Controller) parsePageTemplates(p Page) error {
|
||||
|
@ -35,6 +35,7 @@ func BuildRouter(c *container.Container) {
|
||||
echomw.Recover(),
|
||||
echomw.Gzip(),
|
||||
echomw.Logger(),
|
||||
middleware.LogRequestID(),
|
||||
echomw.TimeoutWithConfig(echomw.TimeoutConfig{
|
||||
Timeout: c.Config.App.Timeout,
|
||||
}),
|
||||
|
@ -45,6 +45,7 @@ func HasField(v interface{}, name string) bool {
|
||||
|
||||
// File appends a cache key to a given filepath so it can remain cached until the app is restarted
|
||||
func File(filepath string) string {
|
||||
// TODO: Use const for path prefix
|
||||
return fmt.Sprintf("/files/%s?v=%s", filepath, CacheKey)
|
||||
}
|
||||
|
||||
|
@ -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
19
middleware/log.go
Normal 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)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user