Documentation
¶
Index ¶
- func JSONHandlerRequestLogger(_ context.Context, logger *slog.Logger, _ *http.Request, data []byte)
- func JSONHandlerResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ http.Header, ...)
- func JSONOrTextHandlerRequestLogger(_ context.Context, logger *slog.Logger, _ *http.Request, data []byte)
- func JSONOrTextHandlerResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ http.Header, ...)
- func JSONOrTextRequestLogger(_ context.Context, logger *slog.Logger, _ *http.Request, data []byte)
- func JSONOrTextResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ *http.Response, ...)
- func JSONRequestLogger(_ context.Context, logger *slog.Logger, _ *http.Request, data []byte)
- func JSONResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ *http.Response, ...)
- func TextHandlerRequestLogger(_ context.Context, logger *slog.Logger, _ *http.Request, data []byte)
- func TextHandlerResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ http.Header, ...)
- func TextRequestLogger(_ context.Context, logger *slog.Logger, _ *http.Request, data []byte)
- func TextResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ *http.Response, ...)
- type TraceHandlerOption
- type TraceHandlerRequest
- type TraceHandlerResponse
- type TraceHooks
- type TraceRequest
- type TraceResponse
- type TraceRoundtripOption
- type TracingHandler
- type TracingRoundTripper
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func JSONHandlerRequestLogger ¶
JSONHandlerRequestLogger logs the request body as a JSON object. The supplied logger is pre-configured with relevant request information.
func JSONHandlerResponseLogger ¶
func JSONHandlerResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ http.Header, statusCode int, data []byte)
JSONHandlerResponseLogger logs the response body from an http.Handler as a JSON object.
func JSONOrTextHandlerRequestLogger ¶
func JSONOrTextHandlerRequestLogger(_ context.Context, logger *slog.Logger, _ *http.Request, data []byte)
JSONOrTextHandlerRequestLogger logs the request body as a JSON object if it is valid JSON, otherwise as text. Use the JSON or Text variants wherever possible as they are more efficient. The supplied logger is pre-configured with relevant request information.
func JSONOrTextHandlerResponseLogger ¶
func JSONOrTextHandlerResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ http.Header, statusCode int, data []byte)
JSONOrTextHandlerResponseLogger logs the response body from an http.Handler as a JSON object if it is valid JSON, otherwise as text. Use the JSON or Text variants wherever possible as they are more efficient.
func JSONOrTextRequestLogger ¶
JSONOrTextRequestLogger logs the request body as a JSON object if it is valid JSON, otherwise as text. Use the JSON or Text variants wherever possible as they are more efficient. The supplied logger is pre-configured with relevant request information.
func JSONOrTextResponseLogger ¶
func JSONOrTextResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ *http.Response, data []byte)
JSONOrTextResponseLogger logs the response body as a JSON object if it is valid JSON, otherwise as text. Use the JSON or Text variants wherever possible as they are more efficient. The supplied logger is pre-configured with relevant request information.
func JSONRequestLogger ¶
JSONRequestLogger logs the request body as a JSON object. The supplied logger is pre-configured with relevant request information.
func JSONResponseLogger ¶
func JSONResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ *http.Response, data []byte)
JSONResponseLogger logs the response body as a JSON object. The supplied logger is pre-configured with relevant request information.
func TextHandlerRequestLogger ¶
TextHandlerRequestLogger logs the request body as a text object. The supplied logger is pre-configured with relevant request information.
func TextHandlerResponseLogger ¶
func TextHandlerResponseLogger(_ context.Context, logger *slog.Logger, _ *http.Request, _ http.Header, statusCode int, data []byte)
TextHandlerResponseLogger logs the response body from an http.Handler as a text object.
func TextRequestLogger ¶
TextRequestLogger logs the request body as a text object. The supplied logger is pre-configured with relevant request information.
Types ¶
type TraceHandlerOption ¶
type TraceHandlerOption func(*handlerOptions)
TraceHandlerOption is the type for options that can be passed to NewTracingHandler.
func WithTraceHandlerLogger ¶
func WithTraceHandlerLogger(logger *slog.Logger) TraceHandlerOption
WithTraceHandlerLogger provides a logger to be used by the TracingHandler. If not specified a default logger that discards all output is used.
func WithTraceHandlerRequest ¶
func WithTraceHandlerRequest(bl TraceHandlerRequest) TraceHandlerOption
WithTraceHandlerRequest sets a callback to be invoked to log the request body. The supplied callback will be called with the request body. The request body is read and replaced with a new reader, so the next handler in the chain can still read it.
func WithTraceHandlerResponse ¶
func WithTraceHandlerResponse(bl TraceHandlerResponse) TraceHandlerOption
WithTraceHandlerResponse sets a callback to be invoked to log the response body. The supplied callback will be called with the response body.
type TraceHandlerRequest ¶
type TraceHandlerRequest func(ctx context.Context, logger *slog.Logger, req *http.Request, data []byte)
TraceHandlerRequest is called to log request body data. The supplied data is a copy of the original request body.
type TraceHandlerResponse ¶
type TraceHandlerResponse func(ctx context.Context, logger *slog.Logger, req *http.Request, hdr http.Header, statusCode int, data []byte)
TraceHandlerResponse is called to log response body data. The supplied data is a copy of the original response body.
type TraceHooks ¶
type TraceHooks uint64
TraceHooks is a bitmask to control which httptrace hooks are enabled.
const ( TraceGetConn TraceHooks = 1 << iota TraceGotConn TracePutIdleConn TraceGotFirstResponseByte TraceGot100Continue TraceGot1xxResponse TraceDNSStart TraceDNSDone TraceConnectStart TraceConnectDone TraceTLSHandshakeStart TraceTLSHandshakeDone TraceWroteHeaderField TraceWroteHeaders TraceWait100Continue TraceWroteRequest // TraceConnections is a convenience group for connection related hooks. TraceConnections = TraceGetConn | TraceGotConn | TracePutIdleConn // TraceDNS is a convenience group for DNS hooks. TraceDNS = TraceDNSStart | TraceDNSDone // TraceConnect is a convenience group for TCP connection hooks. TraceConnect = TraceConnectStart | TraceConnectDone // TraceTLS is a convenience group for TLS handshake hooks. TraceTLS = TraceTLSHandshakeStart | TraceTLSHandshakeDone // TraceWrites is a convenience group for request writing hooks. TraceWrites = TraceWroteHeaderField | TraceWroteHeaders | TraceWait100Continue | TraceWroteRequest // TraceResponses is a convenience group for response related hooks. TraceResponses = TraceGotFirstResponseByte | TraceGot100Continue | TraceGot1xxResponse // TraceAll enables all available trace hooks. TraceAll TraceHooks = TraceConnections | TraceDNS | TraceConnect | TraceTLS | TraceWrites | TraceResponses )
type TraceRequest ¶
TraceRequest is called to log request body data. The supplied data is a copy of the original request body.
type TraceResponse ¶
type TraceResponse func(ctx context.Context, logger *slog.Logger, req *http.Request, resp *http.Response, data []byte)
TraceResponse is called to log response body data. The supplied data is a copy of the original response body.
type TraceRoundtripOption ¶
type TraceRoundtripOption func(*roundtripOptions)
TraceRoundtripOption is an option for configuring a TracingRoundTripper.
func WithTraceHooks ¶
func WithTraceHooks(hooks TraceHooks) TraceRoundtripOption
WithTraceHooks sets the trace hooks to be enabled.
func WithTraceLogger ¶
func WithTraceLogger(logger *slog.Logger) TraceRoundtripOption
WithTraceLogger sets the logger to be used for tracing output.
func WithTraceRequest ¶
func WithTraceRequest(bl TraceRequest) TraceRoundtripOption
WithTraceRequest sets a callback to log request body data.
func WithTraceResponse ¶
func WithTraceResponse(bl TraceResponse) TraceRoundtripOption
WithTraceResponse sets a callback to log response body data.
type TracingHandler ¶
type TracingHandler struct {
// contains filtered or unexported fields
}
TracingHandler is an http.Handler that wraps another http.Handler to provide basic request tracing. It logs the start and end of each request and can be configured to log the request body.
func NewTracingHandler ¶
func NewTracingHandler(next http.Handler, opts ...TraceHandlerOption) *TracingHandler
NewTracingHandler returns a new TracingHandler that wraps the supplied next http.Handler.
func (*TracingHandler) ServeHTTP ¶
func (th *TracingHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP implements http.Handler.
type TracingRoundTripper ¶
type TracingRoundTripper struct {
// contains filtered or unexported fields
}
TracingRoundTripper is an http.RoundTripper that adds httptrace tracing and logging capabilities to an underlying RoundTripper.
func NewTracingRoundTripper ¶
func NewTracingRoundTripper(next http.RoundTripper, opts ...TraceRoundtripOption) *TracingRoundTripper
NewTracingRoundTripper creates a new TracingRoundTripper.