in http/common/logging/logging.go [95:156]
func LogRequest(params LogRequestParams) {
var method, service, reqURL string
switch req := params.Request.(type) {
case *http.Request:
method = req.Method
service = req.Host
reqURL = req.URL.String()
case *azcorePolicy.Request:
method = req.Raw().Method
service = req.Raw().Host
reqURL = req.Raw().URL.String()
default:
return // Unknown request type, do nothing
}
parsedURL, parseErr := url.Parse(reqURL)
if parseErr != nil {
params.Logger.With(
"source", "ApiRequestLog",
"protocol", "REST",
"method_type", "unary",
"code", "na",
"component", "client",
"time_ms", "na",
"method", method,
"service", service,
"url", reqURL,
"error", parseErr.Error(),
).Error("error parsing request URL")
} else {
reqURL = TrimURL(*parsedURL)
}
methodInfo := GetMethodInfo(method, reqURL)
latency := time.Since(params.StartTime).Milliseconds()
var headers map[string]string
if params.Response != nil {
headers = extractHeaders(params.Response.Header)
}
logEntry := params.Logger.With(
"source", "ApiRequestLog",
"protocol", "REST",
"method_type", "unary",
"component", "client",
"time_ms", latency,
"method", methodInfo,
"service", service,
"url", reqURL,
"headers", headers,
)
if params.Error != nil || params.Response == nil {
logEntry.With("error", params.Error.Error(), "code", "na").Error("finished call")
} else if 200 <= params.Response.StatusCode && params.Response.StatusCode < 300 {
logEntry.With("error", "na", "code", params.Response.StatusCode).Info("finished call")
} else {
logEntry.With("error", params.Response.Status, "code", params.Response.StatusCode).Error("finished call")
}
}