feat: server.Server 的 HTTP 请求支持慢消息检测

This commit is contained in:
kercylan98 2023-08-17 12:54:15 +08:00
parent b87df072fc
commit 36a333379e
2 changed files with 11 additions and 2 deletions

View File

@ -3,6 +3,7 @@ package server
import (
"github.com/gin-gonic/gin"
"net/http"
"time"
)
type HandlerFunc[Context any] func(ctx Context)
@ -24,7 +25,9 @@ func (slf *HttpRouter[Context]) handlesConvert(handlers []HandlerFunc[Context])
slf.srv.messageCounter.Add(-1)
}()
hc := slf.packer(ctx)
var now = time.Now()
handler(hc)
slf.srv.low(nil, now, time.Second, "HTTP ["+ctx.Request.Method+"] "+ctx.Request.RequestURI)
})
}
return handles

View File

@ -568,10 +568,16 @@ func (slf *Server) pushMessage(message *Message) {
slf.messageChannel <- message
}
func (slf *Server) low(message *Message, present time.Time, expect time.Duration) {
func (slf *Server) low(message *Message, present time.Time, expect time.Duration, messageReplace ...string) {
cost := time.Since(present)
if cost > expect {
log.Warn("Server", log.String("type", "low-message"), log.String("cost", cost.String()), log.String("message", message.String()), log.Stack("stack"))
var m = "unknown"
if message != nil {
m = message.String()
} else if len(messageReplace) > 0 {
m = messageReplace[0]
}
log.Warn("Server", log.String("type", "low-message"), log.String("cost", cost.String()), log.String("message", m), log.Stack("stack"))
slf.OnMessageLowExecEvent(message, cost)
}
}