From 40991b4a82e4678ae5add25af7bb2c45213af929 Mon Sep 17 00:00:00 2001 From: Hanyu Cui Date: Thu, 5 May 2022 22:31:01 -0700 Subject: [PATCH] Logger skip paths use Context.fullPath This is more flexible and is breaking only in very rare cases. Restore original behavior Update logger path skipping tests --- logger.go | 5 +++-- logger_test.go | 28 ++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/logger.go b/logger.go index 1f9d63ae..80926d38 100644 --- a/logger.go +++ b/logger.go @@ -234,13 +234,14 @@ func LoggerWithConfig(conf LoggerConfig) HandlerFunc { // Start timer start := time.Now() path := c.Request.URL.Path + fullPath := c.FullPath() raw := c.Request.URL.RawQuery // Process request c.Next() - // Log only when path is not being skipped - if _, ok := skip[path]; !ok { + // Log only when fullPath is not being skipped + if _, ok := skip[fullPath]; !ok { param := LogFormatterParams{ Request: c.Request, isTerm: isTerm, diff --git a/logger_test.go b/logger_test.go index b7049988..d6e16d13 100644 --- a/logger_test.go +++ b/logger_test.go @@ -384,16 +384,26 @@ func TestErrorLogger(t *testing.T) { func TestLoggerWithWriterSkippingPaths(t *testing.T) { buffer := new(bytes.Buffer) router := New() - router.Use(LoggerWithWriter(buffer, "/skipped")) + router.Use(LoggerWithWriter(buffer, "/skipped", "/skippedUsers/:id")) router.GET("/logged", func(c *Context) {}) + router.GET("/loggedUsers/:id", func(c *Context) {}) router.GET("/skipped", func(c *Context) {}) + router.GET("/skippedUsers/:id", func(c *Context) {}) PerformRequest(router, "GET", "/logged") assert.Contains(t, buffer.String(), "200") + buffer.Reset() + PerformRequest(router, "GET", "/loggedUsers/2") + assert.Contains(t, buffer.String(), "200") + buffer.Reset() PerformRequest(router, "GET", "/skipped") - assert.Contains(t, buffer.String(), "") + assert.Equal(t, "", buffer.String()) + + buffer.Reset() + PerformRequest(router, "GET", "/skippedUsers/3") + assert.Equal(t, "", buffer.String()) } func TestLoggerWithConfigSkippingPaths(t *testing.T) { @@ -401,17 +411,27 @@ func TestLoggerWithConfigSkippingPaths(t *testing.T) { router := New() router.Use(LoggerWithConfig(LoggerConfig{ Output: buffer, - SkipPaths: []string{"/skipped"}, + SkipPaths: []string{"/skipped", "/skippedUsers/:id"}, })) router.GET("/logged", func(c *Context) {}) + router.GET("/loggedUsers/:id", func(c *Context) {}) router.GET("/skipped", func(c *Context) {}) + router.GET("/skippedUsers/:id", func(c *Context) {}) PerformRequest(router, "GET", "/logged") assert.Contains(t, buffer.String(), "200") + buffer.Reset() + PerformRequest(router, "GET", "/loggedUsers/2") + assert.Contains(t, buffer.String(), "200") + buffer.Reset() PerformRequest(router, "GET", "/skipped") - assert.Contains(t, buffer.String(), "") + assert.Equal(t, "", buffer.String()) + + buffer.Reset() + PerformRequest(router, "GET", "/skippedUsers/3") + assert.Equal(t, "", buffer.String()) } func TestDisableConsoleColor(t *testing.T) {