对于一项要求,我们需要记录 aspnet 核心操作请求的持续时间。在请求结束时,必须记录持续时间(秒表),我们还需要知道使用了哪个控制器和哪个动作方法。
最好的地方是什么?动作过滤器,中间件?如何?
ASP.NET Core 已经收集了这些信息。您只需要确保它被记录在一般情况下,以及您想要的位置。在开发中,这些被发送到控制台。如果你看那个,你会看到像这样的日志:
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 GET http://localhost:44301/
...
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
Route matched with {action = "Index", controller = "Home"}. Executing action MyApp.HomeController.Index (MyApp)
...
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 7.981ms 200 text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
您将感兴趣的主要类别是Microsoft.AspNetCore.Hosting和Microsoft.AspNetCore.Mvc,它们都记录在级别 Information。在生产环境中运行时,默认的日志级别是Warning,这就是为什么你没有在那里记录它。您可以简单地向appsettings.Production.json文件中添加一些内容,例如:
"Logging": {
"LogLevel": {
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Mvc": "Information"
}
}
Run Code Online (Sandbox Code Playgroud)
或者您可以指定仅记录到某个提供程序:
"Serilog": {
"LogLevel": {
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Mvc": "Information"
}
}
Run Code Online (Sandbox Code Playgroud)
你可以得到真正的细粒度和复杂的。有关更多信息,请参阅有关日志过滤的文档。
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |