public static MiddlwareFunc RecordRequestFunc(IStatisticsRecorder recorder) { return (next => async env => { var context = new OwinContext(env); var request = context.Request; var stopwatch = Stopwatch.StartNew(); try { await next(env); } finally { var capturedAction = context.GetCapturedAction(); var route = capturedAction?.RouteTemplate ?? (request.Path.HasValue ? request.Path.Value : null); var time = stopwatch.Elapsed; recorder.RecordAction("request", request.Method, context.Response.StatusCode, time, route); } }); }
public static IAppBuilder RecordRequest(this IAppBuilder app, IStatisticsRecorder recorder) { app.Use(RecordRequestFunc(recorder)); return(app); }
public MetricsWorker(IStatisticsRecorder statisticsRecorder, ISystemMetricsProvider systemMetricsProvider, ILog log) { this.statisticsRecorder = statisticsRecorder; this.systemMetricsProvider = systemMetricsProvider; this.log = log; }