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:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user