net5 Http请求整体处理耗时

net5 webapi http请求处理耗时统计

问题:如何记录http处理耗时

通过中间件记录耗时


app.UseMiddleware<TestMiddleware>();
app.UseRouting();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });


Stopwatch sw = Stopwatch.StartNew();
_logger.LogInformation("1");
var date = DateTime.Now;
await next(context);
_logger.LogInformation($"{date:yyyy-MM-dd HH:mm:ss fff}----{swElapsedMilliseconds}");

Filter记录

    public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
    {
        Stopwatch sw = Stopwatch.StartNew();
        context.HttpContext.Items.Add("Stopwatch", sw);
        var loggerFactory = context.HttpContext.RequestServices.GetService<ILoggerFactory>();
        var logger = loggerFactory.CreateLogger("123");
        logger.LogInformation("3");
        await next();
        logger.LogInformation("4");
    }
    public async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
    {
        var loggerFactory = context.HttpContext.RequestServices.GetService<ILoggerFactory>();
        var logger = loggerFactory.CreateLogger("123");
        logger.LogInformation("5");
        await next();
        var sw = context.HttpContext.Items["Stopwatch"] as Stopwatch;
        logger.LogInformation($"6----耗时{sw.ElapsedMilliseconds}");
    }

Action记录

    [HttpGet]
    [CustomerLogFilter]
    public async Task<string> Get()
    {
        _logger.LogInformation("2");
        Stopwatch sw = Stopwatch.StartNew();
        var enterTime = DateTime.Now;
        var time = enterTime.ToUniversalTime()-new DateTime(1970,1,1,0,0,0,0);
        var preCount = ThreadPool.ThreadCount;
        var tempCount = Interlocked.Increment(ref _count);
        await Task.Delay(200);
        var executeCount = ThreadPool.ThreadCount;
        var timess = time.TotalMilliseconds*10000;
        _logger.LogInformation($"2----耗时:{sw.ElapsedMilliseconds}");
        return $"----{timess}----{sw.ElapsedMilliseconds}----{tempCount}----{preCount}----{executeCount}----{enterTime:yyyy-MM-dd HH:mm:ss.fff}";
    }

结果

2022-03-04 15:55:54.778 +08:00 [INF] 1
2022-03-04 15:55:54.942 +08:00 [INF] 3
2022-03-04 15:55:54.952 +08:00 [INF] 2
2022-03-04 15:55:55.161 +08:00 [INF] 2----耗时:207
2022-03-04 15:55:55.185 +08:00 [INF] 4
2022-03-04 15:55:55.189 +08:00 [INF] 5
2022-03-04 15:55:55.205 +08:00 [INF] 6----耗时264
2022-03-04 15:55:55.207 +08:00 [INF] 2022-03-04 15:55:54 837----432
posted @ 2022-03-04 16:02  yyyyyyan  阅读(159)  评论(0)    收藏  举报