From 38bd93dfb9c5beb8ff962d4d341178df3fc49bba Mon Sep 17 00:00:00 2001 From: liasica Date: Tue, 12 Oct 2021 15:39:10 +0800 Subject: [PATCH] Logger skip sub paths When skip path like "attachments/", the sub path "attachments/producthunt/1.jpg" log will be skipped --- logger.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/logger.go b/logger.go index 22138a8d..0cdda794 100644 --- a/logger.go +++ b/logger.go @@ -9,6 +9,7 @@ import ( "io" "net/http" "os" + "strings" "time" "github.com/mattn/go-isatty" @@ -221,12 +222,16 @@ func LoggerWithConfig(conf LoggerConfig) HandlerFunc { } var skip map[string]struct{} + var skipSub bool if length := len(notlogged); length > 0 { skip = make(map[string]struct{}, length) for _, path := range notlogged { skip[path] = struct{}{} + if strings.HasSuffix(path, "/") { + skipSub = true + } } } @@ -240,7 +245,7 @@ func LoggerWithConfig(conf LoggerConfig) HandlerFunc { c.Next() // Log only when path is not being skipped - if _, ok := skip[path]; !ok { + if _, ok := skip[path]; !ok && (!skipSub || !willSkipLog(path, skip)) { param := LogFormatterParams{ Request: c.Request, isTerm: isTerm, @@ -268,3 +273,13 @@ func LoggerWithConfig(conf LoggerConfig) HandlerFunc { } } } + +// willSkipLog if skip path is "attachments/", url like "attachments/producthunt/*" will be skipped +func willSkipLog(path string, skip map[string]struct{}) bool { + for p := range skip { + if strings.HasPrefix(path, p[:len(p)-1]) { + return true + } + } + return false +}