12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package proxy
- import (
- "net/http"
- "strconv"
- "github.com/rs/zerolog"
- "github.com/cloudflare/cloudflared/connection"
- "github.com/cloudflare/cloudflared/ingress"
- "github.com/cloudflare/cloudflared/management"
- )
- const (
- logFieldCFRay = "cfRay"
- logFieldLBProbe = "lbProbe"
- logFieldRule = "ingressRule"
- logFieldOriginService = "originService"
- logFieldConnIndex = "connIndex"
- logFieldDestAddr = "destAddr"
- )
- var (
- LogFieldFlowID = "flowID"
- )
- // newHTTPLogger creates a child zerolog.Logger from the provided with added context from the HTTP request, ingress
- // services, and connection index.
- func newHTTPLogger(logger *zerolog.Logger, connIndex uint8, req *http.Request, rule int, serviceName string) zerolog.Logger {
- ctx := logger.With().
- Int(management.EventTypeKey, int(management.HTTP)).
- Uint8(logFieldConnIndex, connIndex)
- cfRay := connection.FindCfRayHeader(req)
- lbProbe := connection.IsLBProbeRequest(req)
- if cfRay != "" {
- ctx.Str(logFieldCFRay, cfRay)
- }
- if lbProbe {
- ctx.Bool(logFieldLBProbe, lbProbe)
- }
- return ctx.
- Str(logFieldOriginService, serviceName).
- Interface(logFieldRule, rule).
- Logger()
- }
- // newTCPLogger creates a child zerolog.Logger from the provided with added context from the TCPRequest.
- func newTCPLogger(logger *zerolog.Logger, req *connection.TCPRequest) zerolog.Logger {
- return logger.With().
- Int(management.EventTypeKey, int(management.TCP)).
- Uint8(logFieldConnIndex, req.ConnIndex).
- Str(logFieldOriginService, ingress.ServiceWarpRouting).
- Str(LogFieldFlowID, req.FlowID).
- Str(logFieldDestAddr, req.Dest).
- Uint8(logFieldConnIndex, req.ConnIndex).
- Logger()
- }
- // logHTTPRequest logs a Debug message with the corresponding HTTP request details from the eyeball.
- func logHTTPRequest(logger *zerolog.Logger, r *http.Request) {
- logger.Debug().
- Str("host", r.Host).
- Str("path", r.URL.Path).
- Interface("headers", r.Header).
- Int64("content-length", r.ContentLength).
- Msgf("%s %s %s", r.Method, r.URL, r.Proto)
- }
- // logOriginHTTPResponse logs a Debug message of the origin response.
- func logOriginHTTPResponse(logger *zerolog.Logger, resp *http.Response) {
- responseByCode.WithLabelValues(strconv.Itoa(resp.StatusCode)).Inc()
- logger.Debug().
- Int64("content-length", resp.ContentLength).
- Msgf("%s", resp.Status)
- }
- // logRequestError logs an error for the proxied request.
- func logRequestError(logger *zerolog.Logger, err error) {
- requestErrors.Inc()
- logger.Error().Err(err).Send()
- }
|