Request logging additions (request id, forwarded user) (#618)

* Add request-id logging
* Missing test file
* Add option to log forwarded user information if available via X-Forwarded-Header
* Format
This commit is contained in:
Dan Sosedoff
2022-12-16 12:38:57 -06:00
committed by GitHub
parent e0a748812d
commit afe431c94d
3 changed files with 56 additions and 0 deletions

View File

@@ -8,6 +8,8 @@ import (
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
"github.com/sosedoff/pgweb/pkg/command"
)
var (
@@ -29,6 +31,7 @@ func SetLogger(l *logrus.Logger) {
func RequestLogger(logger *logrus.Logger) gin.HandlerFunc {
debug := logger.Level > logrus.InfoLevel
logForwardedUser := command.Opts.LogForwardedUser
return func(c *gin.Context) {
start := time.Now()
@@ -58,6 +61,19 @@ func RequestLogger(logger *logrus.Logger) gin.HandlerFunc {
"path": path,
}
if reqID := getRequestID(c); reqID != "" {
fields["id"] = reqID
}
if logForwardedUser {
if forwardedUser := c.GetHeader("X-Forwarded-User"); forwardedUser != "" {
fields["forwarded_user"] = forwardedUser
}
if forwardedEmail := c.GetHeader("X-Forwarded-Email"); forwardedEmail != "" {
fields["forwarded_email"] = forwardedEmail
}
}
if err := c.Errors.Last(); err != nil {
fields["error"] = err.Error()
}
@@ -88,3 +104,11 @@ func RequestLogger(logger *logrus.Logger) gin.HandlerFunc {
func sanitizeLogPath(str string) string {
return reConnectToken.ReplaceAllString(str, "/connect/REDACTED")
}
func getRequestID(c *gin.Context) string {
id := c.GetHeader("x-request-id")
if id == "" {
id = c.GetHeader("x-amzn-trace-id")
}
return id
}