在asp.net core中当把日志级别设置为Information时,会在日志中记录请求执行时间(request execution time),比如:
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 3773.3901ms 200 text/html; charset=utf-8
请问这个记录请求执行时间的操作是由哪个中间件(middleware)完成的?
这个地方没有使用 middleware,日志记录是由 HostingRequestFinishedLog 完成的,执行时间的计算是由 HostingApplicationDiagnostics 完成的。
执行开始时间的记录是在 HostingApplication 的 CreateContext 方法中调用 HostingApplicationDiagnostics 的 BeginRequest 方法完成的。执行结束时间的记录是在 HostingApplication 的 DisposeContext 方法中调用 HostingApplicationDiagnostics 的 RequestEnd 方法完成的。
详见 Microsoft.AspNetCore.Hosting 的开源代码:https://github.com/aspnet/Hosting