diff --git a/pkg/server/filter/logging.go b/pkg/server/filter/logging.go index 0fdeb3201..150c0e046 100644 --- a/pkg/server/filter/logging.go +++ b/pkg/server/filter/logging.go @@ -20,6 +20,7 @@ package filter import ( "k8s.io/klog" + "net" "strings" "time" @@ -30,7 +31,7 @@ func Logging(req *restful.Request, resp *restful.Response, chain *restful.Filter start := time.Now() chain.ProcessFilter(req, resp) klog.V(4).Infof("%s - \"%s %s %s\" %d %d %dms", - strings.Split(req.Request.RemoteAddr, ":")[0], + getRequestIP(req), req.Request.Method, req.Request.RequestURI, req.Request.Proto, @@ -39,3 +40,22 @@ func Logging(req *restful.Request, resp *restful.Response, chain *restful.Filter time.Since(start)/time.Millisecond, ) } + +func getRequestIP(req *restful.Request) string { + address := strings.Trim(req.Request.Header.Get("X-Real-Ip"), " ") + if address != "" { + return address + } + + address = strings.Trim(req.Request.Header.Get("X-Forwarded-For"), " ") + if address != "" { + return address + } + + address, _, err := net.SplitHostPort(req.Request.RemoteAddr) + if err != nil { + return req.Request.RemoteAddr + } + + return address +}