Отключить только ведение журнала, связанного с HealthCheck

Я пытаюсь найти способ отключить любое ведение журнала ILogger, связанное с проверкой работоспособности. Я знаю о фильтрации LogLevel, но здесь это не сработает.

Например, у меня есть проверка работоспособности, которая выполняет исходящий вызов API метрик RabbitMQ. Это приводит к исходящему HTTP-вызову с каждым входящим вызовом /health. В общем, я хочу регистрировать все исходящие вызовы, сделанные с помощью HttpClient, но теперь этот журнал заполнен этой конкретной записью в журнале:

[2021.06.15 13:57:04] информация: System.Net.Http.HttpClient.Default.LogicalHandler[101] => ConnectionId: 0HM9FV5PFFL5K => RequestPath:/health RequestId: 0HM9FV5PFFL5K: 00000001, SpanId: | 6726c52-4217ecf92bde4df5 , 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 : Завершить обработку3 запроса HTTP5 после 4.6 мс - ок

Таким образом, я мог бы применить фильтр предупреждений к HttpClient/LogicalHandler, чтобы удалить эти записи, но тогда я удалю все информационные журналы других исходящих запросов Http, которые мне не нужны.

Итак, в основном мне нужен более умный фильтр, который может просматривать области (или даже текст в некоторых случаях) и может фильтровать на основе Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckLogScope. Однако это кажется невозможным, поскольку обратный вызов фильтра не предоставляет эти данные.

Кто-нибудь знает, как сделать более конкретную фильтрацию журналов для таких случаев?

Я просмотрел фильтрацию основного журнала .net по определенным запросам, но расширение каждого используемого мной ILoggerProvider невозможно, поскольку некоторые из них не являются общедоступными классами.


person Nathan A    schedule 15.06.2021    source источник