Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
9870d87d41 | |||
15887d9d2e |
2 changed files with 36 additions and 0 deletions
|
@ -9,6 +9,33 @@ import (
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func BuildLoggingMiddleware(extras map[string]string) HandlerBuilder {
|
||||||
|
return func(h http.Handler) http.Handler {
|
||||||
|
return ChainMiddlewares(h,
|
||||||
|
hlog.NewHandler(log.Logger),
|
||||||
|
hlog.AccessHandler(func(r *http.Request, status, size int, duration time.Duration) {
|
||||||
|
if strings.HasPrefix(r.URL.Path, "/assets") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger := hlog.FromRequest(r).Info().
|
||||||
|
Str("method", r.Method).
|
||||||
|
Stringer("url", r.URL).
|
||||||
|
Int("status", status).
|
||||||
|
Int("size", size).
|
||||||
|
Dur("duration", duration)
|
||||||
|
for k, v := range extras {
|
||||||
|
logger = logger.Str(k, v)
|
||||||
|
}
|
||||||
|
logger.Send()
|
||||||
|
}),
|
||||||
|
hlog.RemoteAddrHandler("ip"),
|
||||||
|
hlog.UserAgentHandler("user_agent"),
|
||||||
|
hlog.RefererHandler("referer"),
|
||||||
|
hlog.RequestIDHandler("req_id", "Request-Id"),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func LoggingMiddleware(handler http.Handler) http.Handler {
|
func LoggingMiddleware(handler http.Handler) http.Handler {
|
||||||
return ChainMiddlewares(handler,
|
return ChainMiddlewares(handler,
|
||||||
hlog.NewHandler(log.Logger),
|
hlog.NewHandler(log.Logger),
|
||||||
|
|
|
@ -81,6 +81,15 @@ func Contains[T comparable](a []T, b T) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ContainsFunc[T any](a []T, f func(t T) bool) bool {
|
||||||
|
for _, v := range a {
|
||||||
|
if f(v) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func Compact[T any](a []T, compactor func(acc T, next T) T) T {
|
func Compact[T any](a []T, compactor func(acc T, next T) T) T {
|
||||||
var acc T
|
var acc T
|
||||||
for _, v := range a {
|
for _, v := range a {
|
||||||
|
|
Loading…
Reference in a new issue