From e0ab9e8caa9237d3e15193fcb0ca74954afc66be Mon Sep 17 00:00:00 2001 From: jloup Date: Thu, 17 May 2018 00:09:08 +0200 Subject: [PATCH] Context log fields. --- api/auth_jwt.go | 1 + api/logger.go | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/api/auth_jwt.go b/api/auth_jwt.go index 88ccda8..27cc3b0 100644 --- a/api/auth_jwt.go +++ b/api/auth_jwt.go @@ -92,6 +92,7 @@ func JwtAuth(c *gin.Context) *Error { c.Set("user", *user) c.Set("claims", claims) + SetContextLogField(c, "user_id", user.Id) return nil } diff --git a/api/logger.go b/api/logger.go index 1016863..ea7266b 100644 --- a/api/logger.go +++ b/api/logger.go @@ -11,11 +11,24 @@ import ( var log = utils.StandardL().WithField("module", "api") +func SetContextLogField(c *gin.Context, field string, value interface{}) { + itf, ok := c.Get("logFields") + var fields map[string]interface{} + if !ok { + fields = make(map[string]interface{}) + } else { + fields = itf.(map[string]interface{}) + } + + fields[field] = value + c.Set("logFields", fields) +} + func Logger() gin.HandlerFunc { return func(c *gin.Context) { path := c.Request.URL.Path - start := time.Now() rawQuery := c.Request.URL.RawQuery + start := time.Now() c.Next() @@ -28,8 +41,10 @@ func Logger() gin.HandlerFunc { l = l.WithField("method", c.Request.Method) l = l.WithField("status_code", code) - if _, exists := c.Get("user"); exists { - l = l.WithField("user_id", GetUser(c).Id) + if itf, ok := c.Get("logFields"); ok { + for field, value := range itf.(map[string]interface{}) { + l = l.WithField(field, value) + } } if rawQuery != "" { -- 2.41.0