로깅용 http request 추가
This commit is contained in:
48
server.go
48
server.go
@ -536,3 +536,51 @@ func MakeRPCError() *RpcReturnError {
|
|||||||
h: nil,
|
h: nil,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type indirectBody struct {
|
||||||
|
inner io.ReadCloser
|
||||||
|
dump []byte
|
||||||
|
closer func()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ib *indirectBody) Read(p []byte) (n int, err error) {
|
||||||
|
n, err = ib.inner.Read(p)
|
||||||
|
if n > 0 {
|
||||||
|
ib.dump = append(ib.dump, p...)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ib *indirectBody) Close() error {
|
||||||
|
if ib.closer != nil {
|
||||||
|
ib.closer()
|
||||||
|
ib.closer = nil
|
||||||
|
}
|
||||||
|
return ib.inner.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
func MakeHttpRequestForLogging(r *http.Request) *http.Request {
|
||||||
|
ib := &indirectBody{
|
||||||
|
inner: r.Body,
|
||||||
|
}
|
||||||
|
|
||||||
|
closer := func() {
|
||||||
|
var uv url.Values
|
||||||
|
|
||||||
|
if r.Form != nil {
|
||||||
|
uv = r.Form
|
||||||
|
} else {
|
||||||
|
uv = r.URL.Query()
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Println("request :")
|
||||||
|
logger.Println(" header :", r.Header)
|
||||||
|
logger.Println(" values :", uv)
|
||||||
|
logger.Println(" body :", string(ib.dump))
|
||||||
|
}
|
||||||
|
|
||||||
|
ib.closer = closer
|
||||||
|
|
||||||
|
r.Body = ib
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user