recovery

package
v1.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2025 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CustomRecoveryMiddleware

func CustomRecoveryMiddleware(logger *logrus.Logger, handler func(c *gin.Context, err interface{})) gin.HandlerFunc

CustomRecoveryMiddleware middleware de recovery con handler personalizado

func PanicBadRequest

func PanicBadRequest(message string, details interface{})

Common panic helpers

func PanicConflict

func PanicConflict(message string, details interface{})

func PanicForbidden

func PanicForbidden(message string, details interface{})

func PanicInternalError

func PanicInternalError(message string, details interface{})

func PanicNotFound

func PanicNotFound(message string, details interface{})

func PanicUnauthorized

func PanicUnauthorized(message string, details interface{})

func PanicWithHTTPError

func PanicWithHTTPError(statusCode int, message string, details interface{})

PanicHandler función helper para hacer panic con HTTPError

func RecoveryMiddleware

func RecoveryMiddleware(logger *logrus.Logger, config *RecoveryConfig) gin.HandlerFunc

RecoveryMiddleware middleware para recuperación de panics

func RecoveryWithStatsMiddleware

func RecoveryWithStatsMiddleware(logger *logrus.Logger, collector *RecoveryStatsCollector, config *RecoveryConfig) gin.HandlerFunc

RecoveryWithStatsMiddleware middleware de recovery que recolecta estadísticas

func SecureRecoveryMiddleware

func SecureRecoveryMiddleware(logger *logrus.Logger) gin.HandlerFunc

SecureRecoveryMiddleware middleware de recovery que no expone información sensible

Types

type HTTPError

type HTTPError struct {
	StatusCode int
	Message    string
	Details    interface{}
}

HTTPError representa un error HTTP con código de estado específico

func NewHTTPError

func NewHTTPError(statusCode int, message string, details interface{}) HTTPError

NewHTTPError crea un nuevo HTTPError

func (HTTPError) Error

func (e HTTPError) Error() string

type PanicInfo

type PanicInfo struct {
	Error         interface{}  `json:"error"`
	Stack         string       `json:"stack,omitempty"`
	RequestInfo   *RequestInfo `json:"request_info,omitempty"`
	Timestamp     time.Time    `json:"timestamp"`
	CorrelationID string       `json:"correlation_id,omitempty"`
	RequestID     string       `json:"request_id,omitempty"`
}

PanicInfo información sobre el panic

type RecoveryConfig

type RecoveryConfig struct {
	// Stack trace settings
	EnableStackTrace bool
	StackSize        int
	SkipFrames       int

	// Response settings
	EnableDetailedError bool
	CustomErrorMessage  string

	// Logging settings
	LogLevel      logrus.Level
	LogStackTrace bool

	// Callbacks
	OnPanic    func(c *gin.Context, err interface{})
	OnRecovery func(c *gin.Context, err interface{}, stack []byte)

	// Security settings
	SanitizeResponse   bool
	IncludeRequestInfo bool
}

RecoveryConfig configuración del middleware de recovery

func DefaultRecoveryConfig

func DefaultRecoveryConfig() *RecoveryConfig

DefaultRecoveryConfig retorna configuración por defecto

type RecoveryStats

type RecoveryStats struct {
	TotalPanics  int64            `json:"total_panics"`
	PanicsByType map[string]int64 `json:"panics_by_type"`
	PanicsByPath map[string]int64 `json:"panics_by_path"`
	LastPanic    time.Time        `json:"last_panic"`
	RecentPanics []PanicInfo      `json:"recent_panics"`
}

RecoveryStats estadísticas de recovery

type RecoveryStatsCollector

type RecoveryStatsCollector struct {
	// contains filtered or unexported fields
}

RecoveryStatsCollector recolecta estadísticas de recovery

func NewRecoveryStatsCollector

func NewRecoveryStatsCollector() *RecoveryStatsCollector

NewRecoveryStatsCollector crea un nuevo recolector de estadísticas

func (*RecoveryStatsCollector) GetStats

func (rsc *RecoveryStatsCollector) GetStats() RecoveryStats

GetStats retorna las estadísticas actuales

func (*RecoveryStatsCollector) RecordPanic

func (rsc *RecoveryStatsCollector) RecordPanic(panicInfo *PanicInfo)

RecordPanic registra un panic

type RequestInfo

type RequestInfo struct {
	Method    string            `json:"method"`
	Path      string            `json:"path"`
	Query     string            `json:"query,omitempty"`
	UserAgent string            `json:"user_agent,omitempty"`
	ClientIP  string            `json:"client_ip"`
	Headers   map[string]string `json:"headers,omitempty"`
	TenantID  string            `json:"tenant_id,omitempty"`
	UserID    string            `json:"user_id,omitempty"`
}

RequestInfo información de la request que causó el panic

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL