Loading documentation...
Loading documentation...
Loading documentation...
Profiles middleware performance (requires profile build tag). Tracks duration, allocations, and memory usage.
Build with profiling enabled:
go build -tags profileWrap middleware with profiling:
s.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(...)))Access profiles:
profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("%s: %v, %d allocs, %d bytes
",
name, profile.Duration, profile.Allocs, profile.Bytes)
}
// Reset profiles
middleware.ResetProfiles()Profiling middleware is only available when built with the profile tag:
# Build with profiling
go build -tags profile
# Run tests with profiling
go test -tags profile ./...Wrap any middleware to profile it:
s.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(middleware.LogFormatJSON)))
s.Use(middleware.ProfileMiddleware("recover", middleware.Recover()))Get all profiles:
profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("Middleware: %s
", name)
fmt.Printf(" Total Duration: %v
", profile.Duration)
fmt.Printf(" Total Allocations: %d
", profile.Allocs)
fmt.Printf(" Total Bytes: %d
", profile.Bytes)
}Each profile contains:
Clear all profiling data:
middleware.ResetProfiles()package main
import (
"fmt"
"github.com/kolosys/helix"
"github.com/kolosys/helix/middleware"
)
func main() {
s := helix.New()
// Profile middleware
s.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(middleware.LogFormatJSON)))
s.Use(middleware.ProfileMiddleware("recover", middleware.Recover()))
// ... setup routes ...
// Periodically print profiles
go func() {
for {
time.Sleep(30 * time.Second)
profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("%s: %v, %d allocs, %d bytes
",
name, profile.Duration, profile.Allocs, profile.Bytes)
}
}
}()
s.Start(":8080")
}profile build tagProfiles middleware performance (requires profile build tag). Tracks duration, allocations, and memory usage.
Build with profiling enabled:
go build -tags profileWrap middleware with profiling:
s.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(...)))Access profiles:
profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("%s: %v, %d allocs, %d bytes
",
name, profile.Duration, profile.Allocs, profile.Bytes)
}
// Reset profiles
middleware.ResetProfiles()Profiling middleware is only available when built with the profile tag:
# Build with profiling
go build -tags profile
# Run tests with profiling
go test -tags profile ./...Wrap any middleware to profile it:
s.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(middleware.LogFormatJSON)))
s.Use(middleware.ProfileMiddleware("recover", middleware.Recover()))Get all profiles:
profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("Middleware: %s
", name)
fmt.Printf(" Total Duration: %v
", profile.Duration)
fmt.Printf(" Total Allocations: %d
", profile.Allocs)
fmt.Printf(" Total Bytes: %d
", profile.Bytes)
}Each profile contains:
Clear all profiling data:
middleware.ResetProfiles()package main
import (
"fmt"
"github.com/kolosys/helix"
"github.com/kolosys/helix/middleware"
)
func main() {
s := helix.New()
// Profile middleware
s.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(middleware.LogFormatJSON)))
s.Use(middleware.ProfileMiddleware("recover", middleware.Recover()))
// ... setup routes ...
// Periodically print profiles
go func() {
for {
time.Sleep(30 * time.Second)
profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("%s: %v, %d allocs, %d bytes
",
name, profile.Duration, profile.Allocs, profile.Bytes)
}
}
}()
s.Start(":8080")
}profile build taggo build -tags profiles.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(...)))profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("%s: %v, %d allocs, %d bytes
",
name, profile.Duration, profile.Allocs, profile.Bytes)
}
// Reset profiles
middleware.ResetProfiles()# Build with profiling
go build -tags profile
# Run tests with profiling
go test -tags profile ./...s.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(middleware.LogFormatJSON)))
s.Use(middleware.ProfileMiddleware("recover", middleware.Recover()))profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("Middleware: %s
", name)
fmt.Printf(" Total Duration: %v
", profile.Duration)
fmt.Printf(" Total Allocations: %d
", profile.Allocs)
fmt.Printf(" Total Bytes: %d
", profile.Bytes)
}middleware.ResetProfiles()package main
import (
"fmt"
"github.com/kolosys/helix"
"github.com/kolosys/helix/middleware"
)
func main() {
s := helix.New()
// Profile middleware
s.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(middleware.LogFormatJSON)))
s.Use(middleware.ProfileMiddleware("recover", middleware.Recover()))
// ... setup routes ...
// Periodically print profiles
go func() {
for {
time.Sleep(30 * time.Second)
profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("%s: %v, %d allocs, %d bytes
",
name, profile.Duration, profile.Allocs, profile.Bytes)
}
}
}()
s.Start(":8080")
}go build -tags profiles.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(...)))profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("%s: %v, %d allocs, %d bytes
",
name, profile.Duration, profile.Allocs, profile.Bytes)
}
// Reset profiles
middleware.ResetProfiles()# Build with profiling
go build -tags profile
# Run tests with profiling
go test -tags profile ./...s.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(middleware.LogFormatJSON)))
s.Use(middleware.ProfileMiddleware("recover", middleware.Recover()))profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("Middleware: %s
", name)
fmt.Printf(" Total Duration: %v
", profile.Duration)
fmt.Printf(" Total Allocations: %d
", profile.Allocs)
fmt.Printf(" Total Bytes: %d
", profile.Bytes)
}middleware.ResetProfiles()package main
import (
"fmt"
"github.com/kolosys/helix"
"github.com/kolosys/helix/middleware"
)
func main() {
s := helix.New()
// Profile middleware
s.Use(middleware.ProfileMiddleware("requestid", middleware.RequestID()))
s.Use(middleware.ProfileMiddleware("logger", middleware.Logger(middleware.LogFormatJSON)))
s.Use(middleware.ProfileMiddleware("recover", middleware.Recover()))
// ... setup routes ...
// Periodically print profiles
go func() {
for {
time.Sleep(30 * time.Second)
profiles := middleware.GetProfiles()
for name, profile := range profiles {
fmt.Printf("%s: %v, %d allocs, %d bytes
",
name, profile.Duration, profile.Allocs, profile.Bytes)
}
}
}()
s.Start(":8080")
}