func()

in log/access_logger.go [120:192]


func (l *loggingResponseWriter) accessLogFields(r *http.Request) logrus.Fields {
	duration := time.Since(l.started)

	fields := l.config.extraFields(r)
	fieldsBitMask := l.config.fields

	// Optionally add built in fields
	if fieldsBitMask&CorrelationID != 0 {
		fields[correlation.FieldName] = correlation.ExtractFromContext(r.Context())
	}

	if fieldsBitMask&HTTPHost != 0 {
		fields[httpHostField] = r.Host
	}

	if fieldsBitMask&HTTPRemoteIP != 0 {
		fields[httpRemoteIPField] = l.getRemoteIP(r)
	}

	if fieldsBitMask&HTTPRemoteAddr != 0 {
		fields[httpRemoteAddrField] = r.RemoteAddr
	}

	if fieldsBitMask&HTTPRequestMethod != 0 {
		fields[httpRequestMethodField] = r.Method
	}

	if fieldsBitMask&HTTPURI != 0 {
		fields[httpURIField] = mask.URL(r.RequestURI)
	}

	if fieldsBitMask&HTTPProto != 0 {
		fields[httpProtoField] = r.Proto
	}

	if fieldsBitMask&HTTPResponseStatusCode != 0 {
		fields[httpResponseStatusCodeField] = l.status
	}

	if fieldsBitMask&HTTPResponseSize != 0 {
		fields[httpResponseSizeField] = l.written
	}

	if fieldsBitMask&HTTPRequestSize != 0 {
		fields[httpRequestSizeField] = computeApproximateRequestSize(r, l.bodyByteCount.Load())
	}

	if fieldsBitMask&HTTPRequestReferrer != 0 {
		fields[httpRequestReferrerField] = mask.URL(r.Referer())
	}

	if fieldsBitMask&HTTPUserAgent != 0 {
		fields[httpUserAgentField] = r.UserAgent()
	}

	if fieldsBitMask&RequestDuration != 0 {
		fields[requestDurationField] = int64(duration / time.Millisecond)
	}

	if fieldsBitMask&RequestTTFB != 0 && l.ttfb > 0 {
		fields[requestTTFBField] = l.ttfb.Milliseconds()
	}

	if fieldsBitMask&System != 0 {
		fields[systemField] = "http"
	}

	if fieldsBitMask&HTTPResponseContentType != 0 {
		fields[httpResponseContentTypeField] = l.contentType
	}

	return fields
}