@@ -2,18 +2,21 @@ package main
22
33import (
44 "encoding/json"
5+ "fmt"
56 "html/template"
7+ "io/ioutil"
68 "log"
79 "net/http"
810 "strconv"
11+ "strings"
912)
1013
1114type Response struct {
1215 ErrorCode int `json:"error_code"`
1316 RequestId string `json:"request_id"`
1417 OriginalURI string `json:"original_uri"`
15- RayId string `json:"ray_id"`
16- ClientIp string `json:"client_ip"`
18+ RayId string `json:"ray_id"`
19+ ClientIp string `json:"client_ip"`
1720 Message string `json:"message"`
1821}
1922
@@ -27,12 +30,14 @@ var ErrorMap = map[int]string{
2730
2831func errorHandler (t * template.Template ) func (http.ResponseWriter , * http.Request ) {
2932 return func (w http.ResponseWriter , r * http.Request ) {
33+ log .Println ("Header:" , formatHeader (r .Header ))
34+ log .Printf ("Body: %s\n " , formatBody (r ))
35+
3036 w .Header ().Set (FormatHeader , r .Header .Get (FormatHeader ))
3137 w .Header ().Set (CodeHeader , r .Header .Get (CodeHeader ))
3238 w .Header ().Set (ContentType , r .Header .Get (ContentType ))
3339 w .Header ().Set (OriginalURI , r .Header .Get (OriginalURI ))
3440 w .Header ().Set (RequestId , r .Header .Get (RequestId ))
35-
3641 format := r .Header .Get (FormatHeader )
3742 if format != "application/json" {
3843 format = DefaultFormat
@@ -57,7 +62,7 @@ func errorHandler(t *template.Template) func(http.ResponseWriter, *http.Request)
5762 RequestId : r .Header .Get (RequestId ),
5863 OriginalURI : r .Header .Get (OriginalURI ),
5964 ClientIp : r .Header .Get (ClientIp ),
60- RayId : r .Header .Get (RayId ),
65+ RayId : r .Header .Get (RayId ),
6166 Message : message ,
6267 }
6368
@@ -78,3 +83,20 @@ func errorHandler(t *template.Template) func(http.ResponseWriter, *http.Request)
7883 }
7984 }
8085}
86+
87+ func formatHeader (header http.Header ) string {
88+ var pairs []string
89+ for key , value := range header {
90+ pairs = append (pairs , fmt .Sprintf ("%s=%s" , key , value ))
91+ }
92+ return strings .Join (pairs , "; " )
93+ }
94+
95+ func formatBody (r * http.Request ) string {
96+ b , err := ioutil .ReadAll (r .Body )
97+ if err != nil {
98+ log .Printf ("Read body request failed with err: %v\n " , err )
99+ return ""
100+ }
101+ return string (b )
102+ }
0 commit comments