Skip to content

Request Logger

RequestLogger logs request and response details after the handler chain completes.

app.Use(middleware.RequestLogger())

Zinc also exposes Logger() and LoggerWithConfig(...) as aliases.

With the default config, Zinc logs:

  • latency
  • method
  • URI
  • status
  • error
  • remote IP
  • host
  • user agent
  • request ID
  • content length
  • response size
Field Meaning
Skipper Skip logging for selected requests
BeforeNextFunc Hook that runs before the rest of the chain
LogValuesFunc Receive extracted values and emit logs yourself
HandleError Route returned errors through Zinc before logging
Logger Custom slog.Logger for the default logger
LogLatency Include request duration
LogMethod Include request method
LogURI Include request URI
LogRoutePath Include matched route path
LogStatus Include response status
LogError Include request error
LogRemoteIP Include remote IP
LogHost Include host
LogUserAgent Include user agent
LogRequestID Include request ID
LogContentLength Include request body size from headers
LogResponseSize Include response bytes written
LogHeaders Capture selected request headers
LogQueryParams Capture selected query parameters
app.Use(middleware.RequestLoggerWithConfig(middleware.RequestLoggerConfig{
LogRoutePath: true,
LogHeaders: []string{"X-Request-ID", "X-Forwarded-For"},
LogValuesFunc: func(c *zinc.Context, v middleware.RequestLoggerValues) error {
slog.Info("http",
"method", v.Method,
"route", v.RoutePath,
"status", v.Status,
"latency", v.Latency,
)
return nil
},
}))

Use it when you need to stamp context, start tracing spans, or derive correlation values before the rest of the middleware stack runs.