HTTP debug middleware should be behind ShouldDebug()
This commit is contained in:
parent
945ddc2403
commit
f7ad97918a
@ -18,6 +18,10 @@ var (
|
|||||||
httpl = logger.DefaultLogger.NewFacility("http", "REST API")
|
httpl = logger.DefaultLogger.NewFacility("http", "REST API")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func shouldDebugHTTP() bool {
|
||||||
|
return l.ShouldDebug("http")
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
l.SetDebug("main", strings.Contains(os.Getenv("STTRACE"), "main") || os.Getenv("STTRACE") == "all")
|
l.SetDebug("main", strings.Contains(os.Getenv("STTRACE"), "main") || os.Getenv("STTRACE") == "all")
|
||||||
l.SetDebug("http", strings.Contains(os.Getenv("STTRACE"), "http") || os.Getenv("STTRACE") == "all")
|
l.SetDebug("http", strings.Contains(os.Getenv("STTRACE"), "http") || os.Getenv("STTRACE") == "all")
|
||||||
|
|||||||
@ -298,23 +298,25 @@ func debugMiddleware(h http.Handler) http.Handler {
|
|||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
t0 := time.Now()
|
t0 := time.Now()
|
||||||
h.ServeHTTP(w, r)
|
h.ServeHTTP(w, r)
|
||||||
ms := 1000 * time.Since(t0).Seconds()
|
|
||||||
|
|
||||||
// The variable `w` is most likely a *http.response, which we can't do
|
if shouldDebugHTTP() {
|
||||||
// much with since it's a non exported type. We can however peek into
|
ms := 1000 * time.Since(t0).Seconds()
|
||||||
// it with reflection to get at the status code and number of bytes
|
|
||||||
// written.
|
// The variable `w` is most likely a *http.response, which we can't do
|
||||||
var status, written int64
|
// much with since it's a non exported type. We can however peek into
|
||||||
if rw := reflect.Indirect(reflect.ValueOf(w)); rw.IsValid() && rw.Kind() == reflect.Struct {
|
// it with reflection to get at the status code and number of bytes
|
||||||
if rf := rw.FieldByName("status"); rf.IsValid() && rf.Kind() == reflect.Int {
|
// written.
|
||||||
status = rf.Int()
|
var status, written int64
|
||||||
}
|
if rw := reflect.Indirect(reflect.ValueOf(w)); rw.IsValid() && rw.Kind() == reflect.Struct {
|
||||||
if rf := rw.FieldByName("written"); rf.IsValid() && rf.Kind() == reflect.Int64 {
|
if rf := rw.FieldByName("status"); rf.IsValid() && rf.Kind() == reflect.Int {
|
||||||
written = rf.Int()
|
status = rf.Int()
|
||||||
|
}
|
||||||
|
if rf := rw.FieldByName("written"); rf.IsValid() && rf.Kind() == reflect.Int64 {
|
||||||
|
written = rf.Int()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
l.Debugf("http: %s %q: status %d, %d bytes in %.02f ms", r.Method, r.URL.String(), status, written, ms)
|
||||||
}
|
}
|
||||||
|
|
||||||
l.Debugf("http: %s %q: status %d, %d bytes in %.02f ms", r.Method, r.URL.String(), status, written, ms)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user