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