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);
 }
示例#3
0
 public MetricsWorker(IStatisticsRecorder statisticsRecorder, ISystemMetricsProvider systemMetricsProvider, ILog log)
 {
     this.statisticsRecorder    = statisticsRecorder;
     this.systemMetricsProvider = systemMetricsProvider;
     this.log = log;
 }