Documentation
¶
Index ¶
- Constants
- Variables
- func LogRecoverError(ctx context.Context, stackSkip int, recoverErr any)
- func RecoverLogger(log zerolog.Logger) func(http.Handler) http.Handler
- func RequestLogger(shouldLog FnShouldLog) func(http.Handler) http.Handler
- func SimplifyStack(stack string, skip int) []string
- func StatusToLogLevel(_ *http.Request, status int) zerolog.Level
- type FnShouldLog
- type FnToLogLevel
Constants ¶
const ( Duration = "duration" // In nanoseconds HTTPStatusCode = "http.status_code" HTTPMethod = "http.method" HTTPURLDetailsPath = "http.url_details.path" NetworkBytesRead = "network.bytes_read" NetworkBytesWritten = "network.bytes_written" Operation = "op" Request = "request" RequestID = "http.request_id" RequestHeaders = "request.headers" RequestError = "request.body_error" Response = "response" TraceID = "trace_id" UserID = "usr.id" )
Reference: https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#http-requests
Variables ¶
var ErrInternal = errors.New("internal error")
ErrInternal is the default error returned from a panic.
var MaxBodyLog uint32 = 24 * 1024
MaxBodyLog controls the maximum request/response body that can be logged. Anything greater will be truncated.
var RecoverBasePath = initBasePath()
Functions ¶
func LogRecoverError ¶ added in v0.4.9
func RecoverLogger ¶ added in v0.3.3
RecoverLogger injects log into requests context and handles panic recovery and logging with stack.
func RequestLogger ¶
func RequestLogger(shouldLog FnShouldLog) func(http.Handler) http.Handler
RequestLogger logs optional data, as specified by the shouldLog func. NOTE: The zerolog context logger MUST be initialized prior to this handler invocation. This is generally done by using the recover logger, or by using the zerolog/hlog.NewHandler directly.
func SimplifyStack ¶ added in v0.4.9
Types ¶
type FnShouldLog ¶
type FnShouldLog func(r *http.Request) (logRequest, logRequestBody, logResponseBody bool, toLogLevel FnToLogLevel)
FnShouldLog given a request, return flags that control logging. logRequest will disable the entire request logging middleware, default is true. logRequestBody will log the body of the request, default is false. logResponseBody will log the body of the response, default is false. This should be disabled for large or streaming results.