Beispiel #1
0
        /// <summary>
        /// Helper method that populates span properties from http status code according
        /// to https://github.com/open-telemetry/opentelemetry-specification/blob/2316771e7e0ca3bfe9b2286d13e3a41ded6b8858/specification/data-http.md.
        /// </summary>
        /// <param name="span">Span to fill out.</param>
        /// <param name="statusCode">Http status code.</param>
        /// <param name="reasonPhrase">Http reason phrase.</param>
        /// <returns>Span with populated properties.</returns>
        public static TelemetrySpan PutHttpStatusCode(this TelemetrySpan span, int statusCode, string reasonPhrase)
        {
            span.PutHttpStatusCodeAttribute(statusCode);

            span.Status = SpanHelper.ResolveSpanStatusForHttpStatusCode(statusCode).WithDescription(reasonPhrase);

            return(span);
        }
        /// <summary>
        /// Helper method that populates span properties from http status code according
        /// to https://github.com/open-telemetry/opentelemetry-specification/blob/2316771e7e0ca3bfe9b2286d13e3a41ded6b8858/specification/data-http.md.
        /// </summary>
        /// <param name="span">Span to fill out.</param>
        /// <param name="statusCode">Http status code.</param>
        /// <param name="reasonPhrase">Http reason phrase.</param>
        /// <returns>Span with populated properties.</returns>
        public static TelemetrySpan PutHttpStatusCode(this TelemetrySpan span, int statusCode, string reasonPhrase)
        {
            span.PutHttpStatusCodeAttribute(statusCode);

            var newStatus = Status.Ok;

            if ((int)statusCode < 200)
            {
                newStatus = Status.Unknown;
            }
            else if ((int)statusCode >= 200 && (int)statusCode <= 399)
            {
                newStatus = Status.Ok;
            }
            else if ((int)statusCode == 400)
            {
                newStatus = Status.InvalidArgument;
            }
            else if ((int)statusCode == 401)
            {
                newStatus = Status.Unauthenticated;
            }
            else if ((int)statusCode == 403)
            {
                newStatus = Status.PermissionDenied;
            }
            else if ((int)statusCode == 404)
            {
                newStatus = Status.NotFound;
            }
            else if ((int)statusCode == 429)
            {
                newStatus = Status.ResourceExhausted;
            }
            else if ((int)statusCode == 501)
            {
                newStatus = Status.Unimplemented;
            }
            else if ((int)statusCode == 503)
            {
                newStatus = Status.Unavailable;
            }
            else if ((int)statusCode == 504)
            {
                newStatus = Status.DeadlineExceeded;
            }
            else
            {
                newStatus = Status.Unknown;
            }

            span.Status = newStatus.WithDescription(reasonPhrase);

            return(span);
        }