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