mirror of https://github.com/gin-gonic/gin.git
Logger skip sub paths
When skip path like "attachments/", the sub path "attachments/producthunt/1.jpg" log will be skipped
This commit is contained in:
parent
5929d52171
commit
38bd93dfb9
17
logger.go
17
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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue