structuredLoggingMiddleware logs requests in structured format
(config LoggingConfig)
| 26 | |
| 27 | // structuredLoggingMiddleware logs requests in structured format |
| 28 | func structuredLoggingMiddleware(config LoggingConfig) gin.HandlerFunc { |
| 29 | return func(c *gin.Context) { |
| 30 | start := time.Now() |
| 31 | path := c.Request.URL.Path |
| 32 | |
| 33 | c.Next() |
| 34 | |
| 35 | latency := time.Since(start) |
| 36 | statusCode := c.Writer.Status() |
| 37 | method := c.Request.Method |
| 38 | requestID := c.GetString("requestID") |
| 39 | |
| 40 | if config.Structured { |
| 41 | fmt.Printf(`{"time":"%s","request_id":"%s","method":"%s","path":"%s","status":%d,"latency":"%v"}%s`, |
| 42 | start.Format(time.RFC3339), requestID, method, path, statusCode, latency, "\n") |
| 43 | } |
| 44 | } |
| 45 | } |
| 46 | |
| 47 | // corsMiddleware handles CORS |
| 48 | func corsMiddleware(config CORSConfig) gin.HandlerFunc { |
no test coverage detected