feat: server.Server 的 HTTP 请求支持慢消息检测
This commit is contained in:
parent
b87df072fc
commit
36a333379e
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue