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

我正在尝试找到一种方法来禁用任何与健康检查相关的 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>                

https://stackoverflow.com/questions/67988005/

相关文章:

azure - Azure DevOps 中的应用程序服务名称显示未找到结果

python - odoo 13 定制多家公司的产品和供应商

javascript - 如何验证 Cypress 中的悬停文本(工具提示)?

mysql - Spring Boot、Java、Docker Compose,尝试在两个容器(my

node.js - 在 NodeJs 中使用 Docker-compose 热重载

python - 天蓝色函数 : How do I write my logs to Azure A

javascript - 如何测试 Chrome 扩展程序的 chrome.runtime.onIn

git - 如何让 Git 在 Windows 上的 RStudio 中打开提交消息?

typescript - 如何强制两种类型在 TypeScript 中不兼容?

c# - 在 UWP 中,我应该在哪里保存用户数据?