【发布时间】:2021-08-31 09:47:13
【问题描述】:
我正在尝试找出一种方法来禁用任何与运行状况检查相关的 ILogger 日志记录。我知道 LogLevel 过滤,但这在这里不起作用。
例如,我有一个健康检查,它对 RabbitMQ 指标 API 进行出站调用。这会导致每次对 /health 的入站调用都会产生出站 http 调用。一般来说,我想记录使用 HttpClient 进行的所有出站调用,但该日志现在充满了这个特定的日志条目:
[2021.06.15 13:57:04] info: System.Net.Http.HttpClient.Default.LogicalHandler[101] => ConnectionId:0HM9FV5PFFL5K => RequestPath:/health RequestId:0HM9FV5PFFL5K:00000001, SpanId:|6726c52 -4217ec92de4df5fb., TraceId:6726c52-4217ec92de4df5fb, ParentId: => Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckLogScope => HTTP GET http://rabbitmq/api/queues/MyVHost/MyQueue?msg_rates_age=60&msg_rates_incr=60 : 4.6355ms 后结束处理 HTTP 请求 - OK
因此,我可以对 HttpClient/LogicalHandler 应用警告过滤器以删除这些条目,但随后我将删除其他出站 Http 请求的所有信息日志,这是我不想要的。
所以,基本上,我需要一个更智能的过滤器,它可以查看范围(在某些情况下甚至是文本),并且可以根据“Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckLogScope”进行过滤。但这似乎是不可能的,因为过滤器回调没有提供这些细节。
有没有人知道如何针对这种情况进行更具体的日志过滤?
我查看了.net core log filtering on certain requests,但无法扩展我使用的每个 ILoggerProvider,因为有些不是公共类。
【问题讨论】:
标签: .net-core asp.net-core-3.1 audit-logging health-check