static IApplicationBuilder UseRequestMetricCore(this IApplicationBuilder app, Action <RequestMetricOptions> init) { var options = new RequestMetricOptions(); init(options); app.UseMiddleware <RequestMetricMiddleware>(Options.Create(options)); return(app); }
public RequestMetricMiddleware( RequestDelegate next, IOptions <RequestMetricOptions> options, IMetricFactory <RequestMetricMiddleware> factory) { _next = next; _options = options.Value; var labels = new List <string>(); if (_options.IncludeStatusCode) { labels.Add("status_code"); } if (_options.IncludeMethod) { labels.Add("method"); } if (_options.IncludePath) { labels.Add("path"); } if (_options.CustomLabels != null) { foreach (var customLabel in _options.CustomLabels) { labels.Add(customLabel.Key); } } var helpTextEnd = string.Join(", ", labels); _labelsCount = labels.Count; _requestDurations = factory.CreateSummary(_options.RequestDurationMetricName, opts => { opts.Help = DurationHelpText + helpTextEnd; opts.LabelNames = labels; if (_options.RequestDurationObjectives != null) { opts.Objectives = _options.RequestDurationObjectives; } }); }