middleware

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jan 30, 2024 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultLoggerConfig = LoggerConfig{
		Skipper:                  middleware.DefaultSkipper,
		Level:                    zerolog.DebugLevel,
		LogRequestBody:           false,
		LogRequestHeader:         false,
		LogRequestQuery:          false,
		RequestBodyLogSkipper:    DefaultRequestBodyLogSkipper,
		RequestBodyLogReplacer:   DefaultBodyLogReplacer,
		RequestHeaderLogReplacer: DefaultHeaderLogReplacer,
		RequestQueryLogReplacer:  DefaultQueryLogReplacer,
		LogResponseBody:          false,
		LogResponseHeader:        false,
		ResponseBodyLogSkipper:   DefaultResponseBodyLogSkipper,
		ResponseBodyLogReplacer:  DefaultBodyLogReplacer,
	}
)

Functions

func DefaultBodyLogReplacer

func DefaultBodyLogReplacer(body []byte) []byte

DefaultBodyLogReplacer returns the body received without any modifications.

func DefaultHeaderLogReplacer

func DefaultHeaderLogReplacer(header http.Header) http.Header

DefaultHeaderLogReplacer replaces all Authorization, X-CSRF-Token and Proxy-Authorization header entries with a redacted string, indicating their presence without revealing actual, potentially sensitive values in the logs.

func DefaultQueryLogReplacer

func DefaultQueryLogReplacer(query url.Values) url.Values

DefaultQueryLogReplacer returns the query received without any modifications.

func DefaultRequestBodyLogSkipper

func DefaultRequestBodyLogSkipper(req *http.Request) bool

DefaultRequestBodyLogSkipper returns true for all requests with Content-Type application/x-www-form-urlencoded or multipart/form-data as those might contain binary or URL-encoded file uploads unfit for logging purposes.

func DefaultResponseBodyLogSkipper

func DefaultResponseBodyLogSkipper(_ *http.Request, res *echo.Response) bool

DefaultResponseBodyLogSkipper returns false for all responses with Content-Type application/json, preventing logging for all other types of payloads as those might contain binary or URL-encoded data unfit for logging purposes.

func Logger

func Logger() echo.MiddlewareFunc

Logger with default logger output and configuration

func LoggerWithConfig

func LoggerWithConfig(config LoggerConfig, output ...io.Writer) echo.MiddlewareFunc

LoggerWithConfig returns a new MiddlewareFunc which creates a logger with the desired configuration. If output is set to nil, the default output is used. If more output params are provided, the first is being used.

Types

type BodyLogReplacer

type BodyLogReplacer func(body []byte) []byte

BodyLogReplacer defines a function to replace certain parts of a body before logging it, mainly used to strip sensitive information from a request or response payload. The []byte returned should contain a sanitized payload ready for logging.

type HeaderLogReplacer

type HeaderLogReplacer func(header http.Header) http.Header

HeaderLogReplacer defines a function to replace certain parts of a header before logging it, mainly used to strip sensitive information from a request or response header. The http.Header returned should be a sanitized copy of the original header as not to modify the request or response while logging.

type LoggerConfig

type LoggerConfig struct {
	Skipper                   middleware.Skipper
	Level                     zerolog.Level
	LogRequestBody            bool
	LogRequestHeader          bool
	LogRequestQuery           bool
	RequestBodyLogSkipper     RequestBodyLogSkipper
	RequestBodyLogReplacer    BodyLogReplacer
	RequestHeaderLogReplacer  HeaderLogReplacer
	RequestQueryLogReplacer   QueryLogReplacer
	LogResponseBody           bool
	LogResponseHeader         bool
	ResponseBodyLogSkipper    ResponseBodyLogSkipper
	ResponseBodyLogReplacer   BodyLogReplacer
	ResponseHeaderLogReplacer HeaderLogReplacer
}

type QueryLogReplacer

type QueryLogReplacer func(query url.Values) url.Values

QueryLogReplacer defines a function to replace certain parts of a URL query before logging it, mainly used to strip sensitive information from a request query. The url.Values returned should be a sanitized copy of the original query as not to modify the request while logging.

type RequestBodyLogSkipper

type RequestBodyLogSkipper func(req *http.Request) bool

RequestBodyLogSkipper defines a function to skip logging certain request bodies. Returning true skips logging the payload of the request.

type ResponseBodyLogSkipper

type ResponseBodyLogSkipper func(req *http.Request, res *echo.Response) bool

ResponseBodyLogSkipper defines a function to skip logging certain response bodies. Returning true skips logging the payload of the response.

Jump to

Keyboard shortcuts

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