mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 18:51:03 +01:00
60 lines
1.9 KiB
Go
60 lines
1.9 KiB
Go
|
// Package pprof usage: app.Get(iris.RouteWildcardPath("/debug/pprof", "action"), pprof.New())
|
||
|
// for specific router adaptors follow these optional route syntax:
|
||
|
// 'adaptors/httprouter':
|
||
|
//
|
||
|
// app := iris.New()
|
||
|
// app.Adapt(httprouter.New())
|
||
|
// app.Get("/debug/pprof/*action", pprof.New())
|
||
|
//
|
||
|
// 'adaptors/gorillamux':
|
||
|
//
|
||
|
// app := iris.New()
|
||
|
// app.Adapt(gorillamux.New())
|
||
|
// app.Get("/debug/pprof/{action:.*}", pprof.New())
|
||
|
package pprof
|
||
|
|
||
|
import (
|
||
|
"net/http/pprof"
|
||
|
"strings"
|
||
|
|
||
|
"gopkg.in/kataras/iris.v6"
|
||
|
)
|
||
|
|
||
|
// New returns a new pprof (profile, cmdline, symbol, goroutine, heap, threadcreate, debug/block) Middleware.
|
||
|
// Note: Route MUST have the last named parameter wildcard named '*action'
|
||
|
func New() iris.HandlerFunc {
|
||
|
indexHandler := iris.ToHandler(pprof.Index)
|
||
|
cmdlineHandler := iris.ToHandler(pprof.Cmdline)
|
||
|
profileHandler := iris.ToHandler(pprof.Profile)
|
||
|
symbolHandler := iris.ToHandler(pprof.Symbol)
|
||
|
goroutineHandler := iris.ToHandler(pprof.Handler("goroutine"))
|
||
|
heapHandler := iris.ToHandler(pprof.Handler("heap"))
|
||
|
threadcreateHandler := iris.ToHandler(pprof.Handler("threadcreate"))
|
||
|
debugBlockHandler := iris.ToHandler(pprof.Handler("block"))
|
||
|
|
||
|
return iris.HandlerFunc(func(ctx *iris.Context) {
|
||
|
ctx.SetContentType("text/html; charset=" + ctx.Framework().Config.Charset)
|
||
|
|
||
|
action := ctx.Param("action")
|
||
|
if len(action) > 1 {
|
||
|
if strings.Contains(action, "cmdline") {
|
||
|
cmdlineHandler.Serve((ctx))
|
||
|
} else if strings.Contains(action, "profile") {
|
||
|
profileHandler.Serve(ctx)
|
||
|
} else if strings.Contains(action, "symbol") {
|
||
|
symbolHandler.Serve(ctx)
|
||
|
} else if strings.Contains(action, "goroutine") {
|
||
|
goroutineHandler.Serve(ctx)
|
||
|
} else if strings.Contains(action, "heap") {
|
||
|
heapHandler.Serve(ctx)
|
||
|
} else if strings.Contains(action, "threadcreate") {
|
||
|
threadcreateHandler.Serve(ctx)
|
||
|
} else if strings.Contains(action, "debug/block") {
|
||
|
debugBlockHandler.Serve(ctx)
|
||
|
}
|
||
|
} else {
|
||
|
indexHandler.Serve(ctx)
|
||
|
}
|
||
|
})
|
||
|
}
|