gpt4 book ai didi

.net-core - 仅禁用与 HealthCheck 相关的日志记录

转载 作者:行者123 更新时间:2023-12-05 08:04:35 27 4
gpt4 key购买 nike

我正在尝试找到一种方法来禁用任何与健康检查相关的 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: End processing HTTP request after 4.6355ms - OK

因此,我可以对 HttpClient/LogicalHandler 应用警告过滤器以删除这些条目,但随后我将删除我不想要的其他出站 Http 请求的所有信息日志。

所以,基本上,我需要一个更智能的过滤器,它可以查看范围(在某些情况下甚至可以查看文本),并且可以根据“Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckLogScope”进行过滤。但这似乎不可能,因为过滤器回调不提供这些详细信息。

有谁知道如何针对此类情况进行更具体的日志过滤?

我看过.net core log filtering on certain requests ,但扩展我使用的每个 ILoggerProvider 是不可能的,因为有些不是公共(public)类。

最佳答案

要过滤掉这些请求,您可以尝试使用带有健康 URL 值的 Log4Net StringMatchFilter 过滤器。如果 health URL 只是 localhost/health,下面是配置文件的代码:

<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="/health" />
<acceptOnMatch value="false" />
</filter>

关于.net-core - 仅禁用与 HealthCheck 相关的日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67988005/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com