diff --git a/admin.go b/admin.go index 875cd0e8..8d28c10c 100644 --- a/admin.go +++ b/admin.go @@ -37,7 +37,7 @@ var beeAdminApp *adminApp // FilterMonitorFunc is default monitor filter when admin module is enable. // if this func returns, admin module records qbs for this request by condition of this function logic. // usage: -// func MyFilterMonitor(method, requestPath string, t time.Duration) bool { +// func MyFilterMonitor(method, requestPath string, t time.Duration, statusCode int) bool { // if method == "POST" { // return false // } @@ -50,7 +50,7 @@ var beeAdminApp *adminApp // return true // } // beego.FilterMonitorFunc = MyFilterMonitor. -var FilterMonitorFunc func(string, string, time.Duration) bool +var FilterMonitorFunc func(string, string, time.Duration, int) bool func init() { beeAdminApp = &adminApp{ @@ -62,7 +62,7 @@ func init() { beeAdminApp.Route("/healthcheck", healthcheck) beeAdminApp.Route("/task", taskStatus) beeAdminApp.Route("/listconf", listConf) - FilterMonitorFunc = func(string, string, time.Duration) bool { return true } + FilterMonitorFunc = func(string, string, time.Duration, int) bool { return true } } // AdminIndex is the default http.Handler for admin module. diff --git a/router.go b/router.go index 72476ae8..c6da4f9b 100644 --- a/router.go +++ b/router.go @@ -849,7 +849,11 @@ Admin: //admin module record QPS if BConfig.Listen.EnableAdmin { timeDur := time.Since(startTime) - if FilterMonitorFunc(r.Method, r.URL.Path, timeDur) { + statusCode := context.ResponseWriter.Status + if statusCode == 0 { + statusCode = 200 + } + if FilterMonitorFunc(r.Method, r.URL.Path, timeDur, statusCode) { if runRouter != nil { go toolbox.StatisticsMap.AddStatistics(r.Method, r.URL.Path, runRouter.Name(), timeDur) } else {