Documentation ¶
Index ¶
- Constants
- func ContextWithAllowedURLQueryParams(ctx context.Context, allow func(key string) bool) context.Context
- func RedactRequestBody(ctx context.Context, reason string) context.Context
- func RedactResponseBody(ctx context.Context, reason string) context.Context
- func RedactedURL(ctx context.Context, u *url.URL) *url.URL
- func Transport(cfg0 *TransportConfig) http.RoundTripper
- type BodyData
- type EventKind
- type Logger
- type Request
- type RequestOrResponse
- type Response
- type SlogLogger
- type TransportConfig
Constants ¶
const DefaultMaxBodySize = 1024
DefaultMaxBodySize holds the maximum body size to include in logged requests when [TransportConfig.MaxBodySize] is <=0.
Variables ¶
This section is empty.
Functions ¶
func ContextWithAllowedURLQueryParams ¶
func ContextWithAllowedURLQueryParams(ctx context.Context, allow func(key string) bool) context.Context
ContextWithAllowedURLQueryParams returns a context that will allow only the URL query parameters for which the given allow function returns true. All others will be redacted from the logs.
func RedactRequestBody ¶
RedactRequestBody returns a context that will cause the logger to redact the request body when logging HTTP requests.
func RedactResponseBody ¶
RedactResponseBody returns a context that will cause Transport to redact the response body when logging HTTP responses. If reason is empty, the body will not be redacted.
func RedactedURL ¶
RedactedURL returns u with query parameters redacted according to ContextWithAllowedURLQueryParams. If there is no allow function associated with the context, all query parameters will be redacted.
func Transport ¶
func Transport(cfg0 *TransportConfig) http.RoundTripper
Transport returns an http.RoundTripper implementation that logs HTTP requests. If cfg0 is nil, it's equivalent to a pointer to a zero-valued TransportConfig.
Types ¶
type BodyData ¶
type BodyData struct { Body string `json:"body,omitempty"` Body64 []byte `json:"body64,omitempty"` BodyRedactedBecause string `json:"bodyRedactedBecause,omitempty"` BodyTruncated bool `json:"bodyTruncated,omitempty"` }
BodyData holds information about the body of a request or response.
type Logger ¶
type Logger interface { // Log logs an event of the given kind with the given request // or response (either *Request or *Response). Log(ctx context.Context, kind EventKind, r RequestOrResponse) }
type Request ¶
type Request struct { ID int64 `json:"id"` Method string `json:"method"` URL string `json:"url"` ContentLength int64 `json:"contentLength"` Header http.Header `json:"header"` BodyData }
Request represents an HTTP request.
type RequestOrResponse ¶
type RequestOrResponse interface {
// contains filtered or unexported methods
}
type Response ¶
type Response struct { ID int64 `json:"id"` Method string `json:"method,omitempty"` URL string `json:"url,omitempty"` Error string `json:"error,omitempty"` StatusCode int `json:"statusCode,omitempty"` Header http.Header `json:"header,omitempty"` BodyData }
Response represents an HTTP response.
type SlogLogger ¶
func (SlogLogger) Log ¶
func (l SlogLogger) Log(ctx context.Context, kind EventKind, r RequestOrResponse)
type TransportConfig ¶
type TransportConfig struct { // Logger is used to log the requests. If it is nil, // the zero [SlogLogger] will be used. Logger Logger // Transport is used as the underlying transport for // making HTTP requests. If it is nil, // [http.DefaultTransport] will be used. Transport http.RoundTripper // IncludeAllQueryParams causes all URL query parameters to be included // rather than redacted using [RedactedURL]. IncludeAllQueryParams bool // MaxBodySize holds the maximum size of body data to include // in the logged data. When a body is larger than this, only this // amount of body will be included, and the "BodyTruncated" // field will be set to true to indicate that this happened. // // If this is <=0, DefaultMaxBodySize will be used. // Use [RedactRequestBody] or [RedactResponseBody] // to cause body data to be omitted entirely. MaxBodySize int }
TransportConfig holds configuration for Transport.