Как можно перебрать все приемники (ILogEventSink
объекты) или обогатители (ILogEventEnricher
объекты) соответственно, зарегистрированные в Serilog?Я использую Serilog.AspNetCore
.
Спасибо.
Итак, моя наивная идея такова: в операции Emit я должен вызвать стороннюю службу, для которой требуется установить текущий HttpContext.Кажется, что операция Emit выполняется в фоновом потоке, которому не назначен HttpContext.Поэтому в операции Emit я хочу разрешить службу IHttpContextAccesor и установить ее свойство HttpContext.Затем я могу вызвать стороннюю службу, требующую установки HttpContext, и все будет хорошо.Текущий экземпляр httpContext, который я получу, находится в моем собственном промежуточном программном обеспечении, и именно здесь я хочу вставить экземпляр httpContext в экземпляр Sink (в его поле [ThreadStatic]) для выполнения сценария, описанного выше.
Другим способом является воссоздание всего Serilog (и его Sink) в промежуточном программном обеспечении при каждом запросе http и передача httpContext его конструктору в качестве параметра.Дорого.