123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package pprof
- import (
- "github.com/gin-gonic/gin"
- "net/http"
- "net/http/pprof"
- )
- const (
- DefaultPrefix = "/debug/pprof"
- )
- func getPrefix(prefixOptions ...string) string {
- prefix := DefaultPrefix
- if len(prefixOptions) > 0 {
- prefix = prefixOptions[0]
- }
- return prefix
- }
- // Register the standard HandlerFuncs from the net/http/pprof package with
- // the provided gin.Engine. prefixOptions is a optional. If not prefixOptions,
- // the default path prefix is used, otherwise first prefixOptions will be path prefix.
- func Register(r *gin.Engine, prefixOptions ...string) {
- prefix := getPrefix(prefixOptions...)
- prefixRouter := r.Group(prefix)
- {
- prefixRouter.GET("/", pprofHandler(pprof.Index))
- prefixRouter.GET("/cmdline", pprofHandler(pprof.Cmdline))
- prefixRouter.GET("/profile", pprofHandler(pprof.Profile))
- prefixRouter.POST("/symbol", pprofHandler(pprof.Symbol))
- prefixRouter.GET("/symbol", pprofHandler(pprof.Symbol))
- prefixRouter.GET("/trace", pprofHandler(pprof.Trace))
- prefixRouter.GET("/block", pprofHandler(pprof.Handler("block").ServeHTTP))
- prefixRouter.GET("/goroutine", pprofHandler(pprof.Handler("goroutine").ServeHTTP))
- prefixRouter.GET("/heap", pprofHandler(pprof.Handler("heap").ServeHTTP))
- prefixRouter.GET("/mutex", pprofHandler(pprof.Handler("mutex").ServeHTTP))
- prefixRouter.GET("/threadcreate", pprofHandler(pprof.Handler("threadcreate").ServeHTTP))
- }
- }
- func pprofHandler(h http.HandlerFunc) gin.HandlerFunc {
- handler := http.HandlerFunc(h)
- return func(c *gin.Context) {
- handler.ServeHTTP(c.Writer, c.Request)
- }
- }
|