diff --git a/internal/router/logger.go b/internal/router/logger.go index 721b2fb46..3c2033726 100644 --- a/internal/router/logger.go +++ b/internal/router/logger.go @@ -19,7 +19,6 @@ package router import ( - "fmt" "net/http" "time" @@ -31,8 +30,7 @@ var skipPaths = map[string]interface{}{ "/api/v1/streaming": nil, } -// LoggerWithConfig instance a Logger middleware with config. -func LoggerWithConfig(log *logrus.Logger) gin.HandlerFunc { +func loggerWithConfig(log *logrus.Logger) gin.HandlerFunc { logHandler := func(c *gin.Context) { start := time.Now() path := c.Request.URL.Path @@ -54,12 +52,21 @@ func LoggerWithConfig(log *logrus.Logger) gin.HandlerFunc { } l := log.WithFields(logrus.Fields{ - "latency": fmt.Sprintf("%13v", latency), + "latency": latency, + "clientIP": clientIP, + "method": method, + "statusCode": statusCode, + "path": path, }) - http.StatusText(statusCode) + if errorMessage != "" { + l.Error(errorMessage) + return + } + l.Infof("%s: wrote %d bytes in %v", http.StatusText(statusCode), bodySize, latency) } } + return logHandler } diff --git a/internal/router/router.go b/internal/router/router.go index 3ef987ce4..614c41521 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -21,7 +21,6 @@ package router import ( "context" "fmt" - "log" "net/http" "time" @@ -105,32 +104,13 @@ func (r *router) Stop(ctx context.Context) error { // The given DB is only used in the New function for parsing config values, and is not otherwise // pinned to the router. func New(ctx context.Context, cfg *config.Config, db db.DB, logger *logrus.Logger) (Router, error) { - - // gin has different log modes; for convenience, we match the gin log mode to - // whatever log mode has been set for logrus - lvl, err := logrus.ParseLevel(cfg.LogLevel) - if err != nil { - return nil, fmt.Errorf("couldn't parse log level %s to set router level: %s", cfg.LogLevel, err) - } - switch lvl { - case logrus.TraceLevel, logrus.DebugLevel: - gin.SetMode(gin.DebugMode) - default: - gin.SetMode(gin.ReleaseMode) - } - + gin.SetMode(gin.ReleaseMode) + // create the actual engine here -- this is the core request routing handler for gts engine := gin.New() - // instruct gin to write out to our logger - loggingConfig := gin.LoggerConfig{ - Formatter: logFormatter, - Output: log.Writer(), - SkipPaths: dontLog, - } - engine.Use(gin.RecoveryWithWriter(logger.Writer())) - engine.Use(gin.LoggerWithConfig(loggingConfig)) + engine.Use(loggerWithConfig(logger)) // 8 MiB engine.MaxMultipartMemory = 8 << 20