提交 0317071a 编写于 作者: M Marcin Maciaszczyk

Fix logger issue

上级 81f479d4
......@@ -19,7 +19,6 @@ import (
"log"
"net/http"
"strconv"
"strings"
restful "github.com/emicklei/go-restful"
client "k8s.io/kubernetes/pkg/client/unversioned"
......@@ -27,44 +26,33 @@ import (
)
const (
Colon = ":"
RequestLogString = "Incoming %s %s %s request from %s"
ResponseLogString = "Outcoming response to %s with %d status code"
)
// Web-service filter function used for request and response logging.
func wsLogger(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) {
remoteAddr := GetRemoteAddr(req)
log.Printf(FormatRequestLog(req, remoteAddr))
log.Printf(FormatRequestLog(req))
chain.ProcessFilter(req, resp)
log.Printf(FormatResponseLog(resp, remoteAddr))
}
// Returns remote address of the request (without port number).
func GetRemoteAddr(req *restful.Request) string {
if strings.Contains(req.Request.RemoteAddr, Colon) {
return strings.Split(req.Request.RemoteAddr, Colon)[0]
} else {
return req.Request.RemoteAddr
}
log.Printf(FormatResponseLog(resp, req))
}
// Formats request log string.
// TODO(maciaszczykm): Display request body.
func FormatRequestLog(req *restful.Request, remoteAddr string) string {
func FormatRequestLog(req *restful.Request) string {
reqURI := ""
if req.Request.URL != nil {
reqURI = req.Request.URL.RequestURI()
}
return fmt.Sprintf(RequestLogString, req.Request.Proto, req.Request.Method,
reqURI, remoteAddr)
reqURI, req.Request.RemoteAddr)
}
// Formats response log string.
// TODO(maciaszczykm): Display response content.
func FormatResponseLog(resp *restful.Response, remoteAddr string) string {
return fmt.Sprintf(ResponseLogString, remoteAddr, resp.StatusCode())
func FormatResponseLog(resp *restful.Response, req *restful.Request) string {
return fmt.Sprintf(ResponseLogString, req.Request.RemoteAddr, resp.StatusCode())
}
// Creates a new HTTP handler that handles all requests to the API of the backend.
......
......@@ -23,40 +23,9 @@ import (
restful "github.com/emicklei/go-restful"
)
func TestGetRemoteAddr(t *testing.T) {
cases := []struct {
request *restful.Request
expected string
}{
{
&restful.Request{
Request: &http.Request{
RemoteAddr: "192.168.1.1:8080",
},
},
"192.168.1.1",
},
{
&restful.Request{
Request: &http.Request{
RemoteAddr: "192.168.1.2",
},
},
"192.168.1.2",
},
}
for _, c := range cases {
actual := GetRemoteAddr(c.request)
if !reflect.DeepEqual(actual, c.expected) {
t.Errorf("GetRemoteAddr(%#v) == %#v, expected %#v", c.request, actual, c.expected)
}
}
}
func TestFormatRequestLog(t *testing.T) {
cases := []struct {
request *restful.Request
remoteAddr string
expected string
}{
{
......@@ -67,15 +36,13 @@ func TestFormatRequestLog(t *testing.T) {
Method: "GET",
},
},
"192.168.1.1",
fmt.Sprintf(RequestLogString, "HTTP 1.1", "GET", "", "192.168.1.1"),
fmt.Sprintf(RequestLogString, "HTTP 1.1", "GET", "", "192.168.1.1:8080"),
},
}
for _, c := range cases {
actual := FormatRequestLog(c.request, c.remoteAddr)
actual := FormatRequestLog(c.request,)
if !reflect.DeepEqual(actual, c.expected) {
t.Errorf("GetRemoteAddr(%#v, %#v) == %#v, expected %#v", c.request, c.remoteAddr,
actual, c.expected)
t.Errorf("FormatRequestLog(%#v) == %#v, expected %#v", c.request, actual, c.expected)
}
}
}
......@@ -83,19 +50,23 @@ func TestFormatRequestLog(t *testing.T) {
func TestFormatResponseLog(t *testing.T) {
cases := []struct {
response *restful.Response
remoteAddr string
request *restful.Request
expected string
}{
{
&restful.Response{},
"192.168.1.1",
&restful.Request{
Request: &http.Request{
RemoteAddr: "192.168.1.1",
},
},
fmt.Sprintf(ResponseLogString, "192.168.1.1", http.StatusOK),
},
}
for _, c := range cases {
actual := FormatResponseLog(c.response, c.remoteAddr)
actual := FormatResponseLog(c.response, c.request)
if !reflect.DeepEqual(actual, c.expected) {
t.Errorf("GetRemoteAddr(%#v, %#v) == %#v, expected %#v", c.response, c.remoteAddr,
t.Errorf("FormatResponseLog(%#v, %#v) == %#v, expected %#v", c.response, c.request,
actual, c.expected)
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册