gitlab.com/gitlab-org/labkit@v1.21.0/log/access_logger_fields.go (about)

     1  package log
     2  
     3  // AccessLogField is used to select which fields are recorded in the access log. See WithoutFields.
     4  type AccessLogField uint16
     5  
     6  const (
     7  	// CorrelationID field will record the Correlation-ID in the access log.
     8  	CorrelationID AccessLogField = 1 << iota
     9  
    10  	// HTTPHost field will record the Host Header in the access log.
    11  	HTTPHost
    12  
    13  	// HTTPRemoteIP field will record the remote caller in the access log, taking Real-IP and X-Forwarded-For headers into account.
    14  	HTTPRemoteIP
    15  
    16  	// HTTPRemoteAddr field will record the remote socket endpoint in the access log.
    17  	HTTPRemoteAddr
    18  
    19  	// HTTPRequestMethod field will record the HTTP method in the access log.
    20  	HTTPRequestMethod
    21  
    22  	// HTTPURI field will record the URI, including parameters.
    23  	HTTPURI
    24  
    25  	// HTTPProto field will record the protocol used to make the request in the access log.
    26  	HTTPProto
    27  
    28  	// HTTPResponseStatusCode field will record the response HTTP status code in the access log.
    29  	HTTPResponseStatusCode
    30  
    31  	// HTTPResponseSize field will record the response size, in bytes, in the access log.
    32  	HTTPResponseSize
    33  
    34  	// HTTPRequestReferrer field will record the referer header in the access log.
    35  	HTTPRequestReferrer
    36  
    37  	// HTTPUserAgent field will record the useragent header in the access log.
    38  	HTTPUserAgent
    39  
    40  	// RequestDuration field will record the request duration in the access log.
    41  	RequestDuration
    42  
    43  	// System field will record the system for the log entry.
    44  	System
    45  
    46  	// HTTPResponseContentType field will record the response content-type in the access log.
    47  	HTTPResponseContentType
    48  
    49  	// RequestTTFB field will record the time to the first byte being written (HTTP Header effectively)
    50  	// in the access log. Time is recorded before an actual Write happens to ensure that this metric
    51  	// is not affected by a slow client receiving data.
    52  	RequestTTFB
    53  )
    54  
    55  const defaultEnabledFields = ^AccessLogField(0) // By default, all fields are enabled
    56  
    57  // For field definitions, consult the Elastic Common Schema field reference
    58  // https://www.elastic.co/guide/en/ecs/current/ecs-field-reference.html.
    59  const (
    60  	httpHostField                = "host"          // ESC: url.domain
    61  	httpRemoteIPField            = "remote_ip"     // ESC: client.ip
    62  	httpRemoteAddrField          = "remote_addr"   // ESC: client.address
    63  	httpRequestMethodField       = "method"        // ESC: http.request.method
    64  	httpURIField                 = "uri"           // ESC url.path + `?` + url.query
    65  	httpProtoField               = "proto"         // ESC: url.scheme
    66  	httpResponseStatusCodeField  = "status"        // ESC: http.response.status_code
    67  	httpResponseSizeField        = "written_bytes" // ESC: http.response.body.bytes
    68  	httpRequestReferrerField     = "referrer"      // ESC: http.request.referrer
    69  	httpUserAgentField           = "user_agent"    // ESC: user_agent.original
    70  	requestDurationField         = "duration_ms"   // ESC: no mapping
    71  	requestTTFBField             = "ttfb_ms"       // ESC: no mapping
    72  	systemField                  = "system"        // ESC: no mapping
    73  	httpResponseContentTypeField = "content_type"  // ESC: no mapping
    74  )