diff --git a/pkg/appsrv/appsrv.go b/pkg/appsrv/appsrv.go index 6732ee4e4b..7f0089e94e 100644 --- a/pkg/appsrv/appsrv.go +++ b/pkg/appsrv/appsrv.go @@ -240,7 +240,6 @@ func genRequestId(w http.ResponseWriter, r *http.Request) string { } func (app *Application) ServeHTTP(w http.ResponseWriter, r *http.Request) { - // log.Printf("defaultHandler %s %s", r.Method, r.URL.Path) rid := genRequestId(w, r) w.Header().Set("X-Request-Host-Id", app.hostId) lrw := &loggingResponseWriter{ResponseWriter: w, status: http.StatusOK, data: []byte{}} @@ -256,9 +255,6 @@ func (app *Application) ServeHTTP(w http.ResponseWriter, r *http.Request) { counter = &hi.counter4XX } else { counter = &hi.counter5XX - if app.exception != nil { - app.exception(r.Method, r.URL.String(), params.Body, errors.Errorf(string(lrw.data))) - } } duration := float64(time.Since(start).Nanoseconds()) / 1000000 counter.hit += 1 @@ -271,16 +267,20 @@ func (app *Application) ServeHTTP(w http.ResponseWriter, r *http.Request) { } else if hi.skipLog { skipLog = true } + peerServiceName := r.Header.Get("X-Yunion-Peer-Service-Name") + var remote string + if len(peerServiceName) > 0 { + remote = fmt.Sprintf("%s:%s", r.RemoteAddr, peerServiceName) + } else { + remote = r.RemoteAddr + } if !skipLog { - peerServiceName := r.Header.Get("X-Yunion-Peer-Service-Name") - var remote string - if len(peerServiceName) > 0 { - remote = fmt.Sprintf("%s:%s", r.RemoteAddr, peerServiceName) - } else { - remote = r.RemoteAddr - } log.Infof("%s %d %s %s %s (%s) %.2fms", app.hostId, lrw.status, rid, r.Method, r.URL, remote, duration) } + if lrw.status >= 500 && app.exception != nil { + url := fmt.Sprintf("%d %s (%s) %.2fms", lrw.status, r.URL.String(), remote, duration) + app.exception(r.Method, url, params.Body, errors.Errorf(string(lrw.data))) + } } func (app *Application) handleCORS(w http.ResponseWriter, r *http.Request) bool {