add user id to logs as json field

This commit is contained in:
kiwiidb
2023-05-23 19:30:32 +02:00
parent db74659dd0
commit cd7ee1cf7c
4 changed files with 24 additions and 16 deletions

22
main.go
View File

@@ -13,6 +13,7 @@ import (
"time"
"github.com/getAlby/lndhub.go/rabbitmq"
"github.com/rs/zerolog"
cache "github.com/SporkHubr/echo-http-cache"
"github.com/SporkHubr/echo-http-cache/adapter/memory"
@@ -131,9 +132,6 @@ func main() {
e.Logger = logger
e.Use(middleware.RequestID())
e.Use(lecho.Middleware(lecho.Config{
Logger: logger,
}))
// Setup exception tracking with Sentry if configured
// sentry init needs to happen before the echo middlewares are added
@@ -186,13 +184,14 @@ func main() {
InvoicePubSub: service.NewPubsub(),
}
logMw := createLoggingMiddleware(logger)
// strict rate limit for requests for sending payments
strictRateLimitMiddleware := createRateLimitMiddleware(c.StrictRateLimit, c.BurstRateLimit)
secured := e.Group("", tokens.Middleware(c.JWTSecret))
securedWithStrictRateLimit := e.Group("", tokens.Middleware(c.JWTSecret), strictRateLimitMiddleware)
secured := e.Group("", tokens.Middleware(c.JWTSecret), logMw)
securedWithStrictRateLimit := e.Group("", tokens.Middleware(c.JWTSecret), strictRateLimitMiddleware, logMw)
RegisterLegacyEndpoints(svc, e, secured, securedWithStrictRateLimit, strictRateLimitMiddleware, tokens.AdminTokenMiddleware(c.AdminToken))
RegisterV2Endpoints(svc, e, secured, securedWithStrictRateLimit, strictRateLimitMiddleware, tokens.AdminTokenMiddleware(c.AdminToken))
RegisterLegacyEndpoints(svc, e, secured, securedWithStrictRateLimit, strictRateLimitMiddleware, tokens.AdminTokenMiddleware(c.AdminToken), logMw)
RegisterV2Endpoints(svc, e, secured, securedWithStrictRateLimit, strictRateLimitMiddleware, tokens.AdminTokenMiddleware(c.AdminToken), logMw)
//Swagger API spec
docs.SwaggerInfo.Host = c.Host
@@ -307,6 +306,15 @@ func main() {
svc.Logger.Info("LNDhub exiting gracefully. Goodbye.")
}
func createLoggingMiddleware(logger *lecho.Logger) echo.MiddlewareFunc {
return lecho.Middleware(lecho.Config{
Logger: logger,
Enricher: func(c echo.Context, logger zerolog.Context) zerolog.Context {
return logger.Interface("UserID", c.Get("UserID"))
},
})
}
func createRateLimitMiddleware(requestsPerSecond int, burst int) echo.MiddlewareFunc {
config := middleware.RateLimiterConfig{
Store: middleware.NewRateLimiterMemoryStoreWithConfig(