禁用单个 .Net Core 控制器端点的日志记录
Posted
技术标签:
【中文标题】禁用单个 .Net Core 控制器端点的日志记录【英文标题】:Disable logging for single .Net Core controller endpoint 【发布时间】:2022-01-18 11:29:51 【问题描述】:我有一个托管在 Azure 上的简单 .Net Core 3.1 Web API,并且对应用程序的索引路由进行了过多的运行状况检查,这些消息使日志泛滥:
INFO 2021-12-15 09:48:57,710 [22 ] Microsoft.AspNetCore.Hosting.Diagnostics - Request starting HTTP/1.1 GET http://localhost:21021/
INFO 2021-12-15 09:48:57,714 [22 ] ft.AspNetCore.Routing.EndpointMiddleware - Executing endpoint '<RedactedApplicationName>.Web.Host.Controllers.HomeController.Index (<RedactedApplicationName>.Web.Host)'
INFO 2021-12-15 09:48:57,718 [22 ] c.Infrastructure.ControllerActionInvoker - Route matched with action = "Index", controller = "Home", area = "". Executing controller action with signature Microsoft.AspNetCore.Mvc.IActionResult Index() on controller <RedactedApplicationName>.Web.Host.Controllers.HomeController (<RedactedApplicationName>.Web.Host).
INFO 2021-12-15 09:48:57,735 [22 ] c.Infrastructure.ControllerActionInvoker - Executing action method <RedactedApplicationName>.Web.Host.Controllers.HomeController.Index (<RedactedApplicationName>.Web.Host) - Validation state: Valid
INFO 2021-12-15 09:48:57,736 [22 ] c.Infrastructure.ControllerActionInvoker - Executed action method <RedactedApplicationName>.Web.Host.Controllers.HomeController.Index (<RedactedApplicationName>.Web.Host), returned result Microsoft.AspNetCore.Mvc.RedirectResult in 0.0337ms.
INFO 2021-12-15 09:48:57,738 [22 ] vc.Infrastructure.RedirectResultExecutor - Executing RedirectResult, redirecting to /swagger.
INFO 2021-12-15 09:48:57,740 [22 ] c.Infrastructure.ControllerActionInvoker - Executed action <RedactedApplicationName>.Web.Host.Controllers.HomeController.Index (<RedactedApplicationName>.Web.Host) in 20.0366ms
INFO 2021-12-15 09:48:57,741 [22 ] ft.AspNetCore.Routing.EndpointMiddleware - Executed endpoint '<RedactedApplicationName>.Web.Host.Controllers.HomeController.Index (<RedactedApplicationName>.Web.Host)'
INFO 2021-12-15 09:48:57,744 [22 ] Microsoft.AspNetCore.Hosting.Diagnostics - Request finished in 33.7378ms 302
INFO 2021-12-15 09:48:57,749 [19 ] Microsoft.AspNetCore.Hosting.Diagnostics - Request starting HTTP/1.1 GET http://localhost:21021/swagger/index.html
INFO 2021-12-15 09:48:57,758 [6 ] Microsoft.AspNetCore.Hosting.Diagnostics - Request finished in 9.0414ms 200 text/html;charset=utf-8
我仍然希望保留信息级别的日志,因为我正在记录我希望在其他地方看到的其他信息。端点如下所示:
public IActionResult Index()
return Redirect("/swagger");
是否有一个注释可以用来禁用这个单一控制器端点的日志记录?
【问题讨论】:
添加运行状况检查中间件并将 Azure 的运行状况检查指向该路径不是更有意义吗?重定向到招摇页面进行健康检查是浪费资源恕我直言 @CamiloTerevinto 这听起来是个好主意。我有一个 Azure Front Door,它发送这些运行状况探测来检查后端运行状况。您知道如何更改它将运行状况探测发送到的端点吗?我找不到前门的那个选项。 转到 Front Door Designer > 选择后端池 > 启用运行状况探测 > 更改路径(状态正下方) 【参考方案1】:我认为您可以使用 appsetting.json 中的 logLevel 配置部分并执行以下操作:
"Logging":
"IncludeScopes": false,
"LogLevel":
"Default": "Trace",
"System": "Information",
"Acme.Controllers.IndexController": "None"
【讨论】:
我在主帖的 cmets 中继续使用 @CamiloTerevinto 的替代方法,并且不需要这个。如果有人可以对此进行测试并确认它可以工作,我可以选择它作为 awnser。以上是关于禁用单个 .Net Core 控制器端点的日志记录的主要内容,如果未能解决你的问题,请参考以下文章
来自静态类的 ASP.NET Core Web API 日志记录
如何使用 LoggerFactory 和 Microsoft.Extensions.Logging 使用 C# 进行 .NET Core 控制台日志记录